位運算總結

2021-09-01 12:02:39 字數 1228 閱讀 3095

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,這取決...