OI 位運算操作

2022-08-19 06:48:09 字數 1020 閱讀 3894

一、基礎操作

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 或運算,二元操作符,對兩個操作員的每個二進位制位或運算,...