位運算的妙用技巧

2021-08-30 19:30:12 字數 1389 閱讀 4672

c/c++語言提供的位運算子有:

運算子含義功能

&按位與兩個二進位制位都為1,則該位的結果值為1;否則為0。

|按位或兩個二進位制位中只要有乙個為1,該位的結果值為1。

按位異或兩個二進位制位不同則結果為1(真),相同則結果為0(假)

取反乙個二進位制數按位取反,即將0變1,將1變0。

<<左移左移運算子是用來將乙個數的各二進位制位全部左移n位,右補0。

>>右移表示將a的各二進位制位右移n位,移到右端的低位被捨棄,對無符號數,高位補0。

位運算的結果演示:

位運算或 「|」 or與 「&」and非 「~」 not異或 「^」 xor

運算元101010101110101011010101010000001

運算元20010101010101010(無)01111111

也能算結果01111111100000000101010111111110

根據上述特性,可以產生以下技巧:

【判斷乙個數的奇偶性】

templateinline bool parity(type value)

int main()

【a 異或b, 然後再異或b ,會得到a】

//一般用於加解密

int main()

位運算的妙用

位運算的操作 負數是按照補碼的形式參與按位與運算的 原碼就是符號位加上真值的絕對值,即用第一位表示符號,其餘位表示值.1為正,0為負 反碼的表示方法是 正數的反碼是其本身 負數的反碼是在其原碼的基礎上,符號位不變,其餘各個位取反.補碼的表示方法是 正數的補碼就是其本身 負數的補碼是在其原碼的基礎上,...

位運算的妙用

做題中常用的位運算有以下幾種 判斷奇偶性 if n 1 else 常用於快速冪和其他判斷奇偶性的地方 乘除2的整次冪 scanf d d n,m 輸出n乘2的m次方 printf d n m 線段樹求左兒子可以用 id 1得到,乙個偶數n 加1可以寫做n 1,如求左兒子可以用 id 1 1得到。sc...

c c 位運算妙用

在vc 程式設計中,會發現微軟的很多api裡面都用到了位運算,比如這個函式 createwindowexa in dword dwexstyle,in opt lpcstr lpclassname,in opt lpcstr lpwindowname,in dword dwstyle,in intx...