一、基礎操作
1.a《將二進位制a左移b位,不夠的地方用0補位
例如100<<2 == 10000
2.a>>b
將二進位制a右移b位
例如100>>2 == 1
3.a|b
或操作(按位或),相同位中只要有乙個1或者兩個1則結果為1,全0則結果為0
4.a&b
與操作(按位與),相同位中只要都是1,則結果為1,如果乙個為0乙個為1或者都是0則結果為0。
5.a^b
異或,相同位只要乙個1乙個0,則結果為1;相同位二進位制相同則結果為0 。
二、高階操作
1.快速求2^n
1《原理:1<2.判斷奇數偶數
n&1 == 1則為奇數
n&1 == 0則為偶數
原理:n&1的意思是n與1,那麼n與1中,1除了右端位為1其他位都是0,則由與運算得到的結果中其他位必定都是0 。
所以最後得到的結果只與1的右端位和n的右端位有關,我們知道1的右端位為1,那麼n的右端位只有為1的時候與1進行與運算的結果是1;n的右端位只有為0的時候與1進行與運算的結果是0 。
顯然二進位制右端位為1的時候該數為奇數,為0時該數為偶數,所以得證。
3.lowbit
a&(-a) 代表著a的二進位制的最後一位。
原理:涉及到二進位制的補碼知識,感興趣的人可以自己了解。
三、高階操作
1.a >> b & 1 代表著如果a的第b位為1則為真
用來判斷二進位制的某一位
原理:a左移b位,則a的右端位就是原來a的第b位,這時與1做與運算(1左邊的0由與運算性質得沒有影響)就可以得知這一位是1還是0(1&1 == 1,0|1 == 0 )
2.a|(1《原理:1《而1的部分由或的性質(1|1==1,0|1=1)可以得出一定是1。
四、圖論
x表示要判斷的點,s表示集合
(1 << x) & s == true 即x在s集合裡,如果為false則x不在s集合裡
s = s | (1 << x) 表示s集合中加入了x點
C C 位操作 位運算
在c語言中,可以單獨操控變數的位 bit 一般高階語言不會處理這級別的細節,c在提供高階語言便利的同時,還能為組合語言所保留的級別上工作,這使其成為編寫裝置驅動程式和嵌入式 的首選語言。目錄 二進位制整數 binary 有符號整數 八進位制 octal 十六進製制 hex 位運算子 按位與 的用途 ...
位運算操作詳解
在計算機中所有資料都是以二進位制的形式儲存的。位運算其實就是直接對在記憶體中的二進位制資料進行操作,因此處理資料的速度非常快。在實際程式設計中,如果能巧妙運用位操作,完全可以達到四兩撥千斤的效果,正因為位操作的這些優點,所以位操作在各大it公司的筆試面試中一直是個熱點問題。基本的位操作符有與 或 異...
位運算操作符
與運算,二元操作符,對兩個操作員的每個二進位制位進行與運算,運算規則為 1 1 1 1 0 0 0 1 0 0 0 0 異或運算,二元操作符,對兩個操作員的每個二進位制位進行異或運算,運算規則為 1 1 0 1 0 1 0 1 1 0 0 0 或運算,二元操作符,對兩個操作員的每個二進位制位或運算,...