首頁  >  問答  >  主體

c++ - (已解决)C语言中“按位运算”的应用都有哪些?

如题,正在学习C语言,其中有个知识点是按位运算,跟着书上的介绍和动手去写示例程序明白白其中的原理了。就是对存储在内存中的一个或两个值的位进行运算,也会对两个值进行按位与、按位或、取反等的操作。

自己一点粗略的理解是通过对内存的直接操作可以节省资源提高效率。

请问这个知识点的应用点是在哪里?比如:最常用在什么场景中,大概哪类程序中?再能举几个例子最好拉。

补充:感谢大家的热心回答,基本能解除我的疑惑了。

高洛峰高洛峰2714 天前824

全部回覆(9)我來回復

  • PHPz

    PHPz2017-04-17 13:08:13

    例如一個三十二位的數,每一位代表一種中斷,那麼去清零某一位就是用與,如果要置位某一位就用或。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 13:08:13

    可以用移位的運算優化效率,可以用1bit的空間做flag

    回覆
    0
  • 迷茫

    迷茫2017-04-17 13:08:13

    例如有一個8位二進制整數,每一位的1代表通電,0代表斷電,我們要讓8個開關挨個通斷電就需要用位運算了,可以去找單片機的代碼看看

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 13:08:13

    如果用位移來計算,最好交給編譯器優化,如x<<12,例如直接x*1024.
    位常用的一個就是標誌位,例如一個功能有哪些特性,可以用位來表示。

    flag1=0x1
    flag2=0x2
    flag3=0x4
    flag4=0x8
    if(flag&flag3){
    ....
    .<

    回覆
    0
  • 黄舟

    黄舟2017-04-17 13:08:13

    位元運算的意義在於運作效率通常比加減乘除高幾倍到幾十倍,在很關心速度的演算法中常常會採用,例如許多比較底層的演算法。缺點是可讀性和可維護性差。範例可以看這個網頁:https://graphics.stanford.edu/~seander/bithacks.html

    此外,用整數表示集合,用位元運算進行集合運算,也是一種常見的用法。

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 13:08:13

    認同 @__simple 的說法,單晶片中的置位(1)和清零(0)可以透過與另外一個量來運算取得

    回覆
    0
  • 迷茫

    迷茫2017-04-17 13:08:13

    總的來說,為運算節省空間,速度快,應用的範例有
    1.點陣圖索引。比如說qq號或電話號碼的去重和查詢;
    2.位元遮罩。典型的是linux檔案權限;
    3.產生偽隨機數;
    4.格雷碼

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-17 13:08:13

    用來設定物件的屬性

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-17 13:08:13

    例如在給單晶片寫程式碼時,要給某個暫存器賦值,使用位元運算顯然要簡單有效率。

    回覆
    0
  • 取消回覆