1、 位運算符號
&(按位與,二進位制相同的位都為1才為1,否則為0);
|(按位或,二進位制相同的位上只要有乙個為1就為1);
^(按位異或,二進位制相同的位上不一樣為1,一樣為0);
~(按位取反,不分正負數);
<<(按位左移,標準規定在右邊補0);>>(按位右移,正數則左邊補0,負數算術右移即負數補1)
2、 二進位制位的變換操作步驟
1 確定符號
想得到1——>(按位或1)|1,其他位為0;
想得到0——>(按位與0)&0,其他位為1;
想取反——>(按位異或1)^1,其他位為0;
0和任何數按位異或(^)不改變原值;
1和任何數按位與(&)不改變原值;
2確定數字
3構造上一步數字
3、一些常見的二進位制位的變換操作。
去掉最後一位 (100010001->10001000) --> x >> 1
在最後加乙個0 (100010001->1000100010) -->x << 1
在最後加乙個1 (100010001->1011011) --> (x << 1)|1
把最後一位變成1 (1000100->1000101) --> x | 1
把最後一位變成0 (1000101->1000100) -->(x | 1)-1
把最後一位取反 (1000100->1000101) --> x ^ 1
把右數第k位變成1 (10000001->10001001,k=4) -->x | (1 << (k-1))
把右數第k位變成0 (1001001->1000001,k=4) --> x & ~(1 << (k-1))
右數第k位取反 (101001->101101,k=4) |–>x ^ (1 << (k-1))
取末3位 (1101101->101) -->x & 7
取末23位–>x&0x7fffff
取末k位 (110001111->1111,k=4) -->x & ((1 << k)-1)
取右數第k位(1100001111->1,k=4) -->(x >> (k-1)) & 1
把右邊連續的1變成0 (10000100111->100100000) --> x & (x+1)
把右起第乙個0變成1(10000111011->10000111111) -->x | (x+1)
把右邊連續的0變成1 (1100011000->1100011111) -->x | (x-1)
位運算總結
位運算是指按二進位制進行的運算。在系統軟體中,常常需要處理二進位制位的問題。c語言提供了6個位操作 運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。c語言提供的位運算子列表 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位...
位運算總結
位運算是指按二進位制進行的運算。在系統軟體中,常常需要處理二進位制位的問題。c語言提供了6個位操作 運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。c語言提供的位運算子列表 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位...
位運算總結
一 優先順序 高 低 算術運算子 關係運算子 賦值 二 移位運算 要點 1 它們都是雙目運算子,兩個運算分量都是整形,結果也是整形。2 左移 右邊空出的位上補0,左邊的位將從字頭擠掉,其值相當於乘2。3 右移 右邊的位被擠掉。對於左邊移出的空位,如果是正數則空位補0,若為負數,可能補0或補1,這取決...