2 1 常用位操作符

2021-07-11 16:57:21 字數 1452 閱讀 3060

預備知識:什麼是位?還記得吧,乙個位元組是八位,所謂的一位就是乙個二進位制位,也就是說每一位可以存放乙個二進位制數0或1。

1.位與 &

(1)位與符號是&,按照乙個數的二進位制位按位與。

(2)位與的真值表:1&1=1,1&0=0,0&1=0,0&0=0.

——好,那我們來舉個例子:兩個二進位制數分別是 10101010、01111010。所謂位與就是二進位制的每一位進行與,即要想把兩個數(十進位制、十六進製制等)進行位與,必先把其轉化為二進位制數才能進行位與。

———— 10101010

——— & 01111010

—結果為 00101010

2.位或 |

(1)位或符號是|,按照二進位制位按位或。

(2)位或的真值表:1|1=1,1|0=1,0|1=1,0|0=0。

舉例:兩個二進位制數分別是 10101010、01111010。所謂位或就是二進位制的每一位進行或,即要想把兩個數(十進位制、十六進製制等)進行位與,必先把其轉化為二進位制數才能進行位或。

———10101010

——& 01111010

結果為 11111010

3.位取反 ~

(1)位取反是~

(2)二進位制數按位取反,0變1,1變0,

(3)注意:舉例:int a=45; int b, b=~(~a),取反兩次還是原來的數。

(4)與之相對應的是邏輯取反 ! ,非真即假。結果只有0和1.

4.位異或 ^

(1)按照二進位制位異或

(2)真值表:1^1=0,1^0=1,0^1=1,0^0=0;

可總結為每一位相同為0,不同為1.

5.左移<< 右移》

(1)c語言的移位取決於資料型別,(嵌入式都是研究無符號數的數)

對於無符號數,左移時,右側補零,相當於邏輯移位

對於無符號數,右移時,左側補零,相當於邏輯移位,

對於有符號數,左移時,右側補零,(叫算術移位)

對於有符號數,右移時,左側補符號位(正數補零,負數補1)

總結(重點):

(1)位與,位或,位異或。

位與:(二進位制數)與1位與無變化,與0位與變成0;

位或:(二進位制數)與1位或變成1,與0位或無變化。

位異或:(二進位制數)與1異或會取反,與0異或無變化。

(2)如果要求位與:12&96:第一步:把12、96轉換為二進位制數,第二步:每一位按照真值表位與。第三步:把位與之後的結果在轉換成十進位制或者十六進製制(純粹是為了方便人來看)。(位或、位異或、位取反同位與)

(3)要注意,真值表的1和0都是二進位制的,

(4)左移右移是什麼意思?二進位制數左移又是什麼意思?分析:乙個十進位制數10左移一位,也就是說從原來的十位移動到百位,變成了100,十進位制的一位是10,左移一位相當於擴大了一位(10倍),再來想二進位制,道理是不是一樣的?

2 1 C語言之位操作符

c語言中,位操作一共有6個位操作符,分別是位與 and 位或 or 位取反 一元運算子 位異或 xor 左移位 右移位 2.1.1位與 1 位與操作符 邏輯與操作符 兩者不同。位與是按位進行與操作,只有0或者1這兩個運算元 邏輯與運算元是只要不是0的,都為1,邏輯與是兩個運算元作為整體來相與的。2 ...

c語言操作符 位操作符 移位操作符

1 按位操作符 1.1 按位 與 雙目運算子 僅當兩個運算元都為1時,結果為1,否則為0。參與運算的數以補碼方式出現。例 9 5 1 0000 1001 9的補碼 0000 0101 5的補碼 0000 0001 1的補碼 應用 a 通常將某些位清零或保留某些位。例如 將a的高八位清零,保留低八位,...

位運算操作符

與運算,二元操作符,對兩個操作員的每個二進位制位進行與運算,運算規則為 1 1 1 1 0 0 0 1 0 0 0 0 異或運算,二元操作符,對兩個操作員的每個二進位制位進行異或運算,運算規則為 1 1 0 1 0 1 0 1 1 0 0 0 或運算,二元操作符,對兩個操作員的每個二進位制位或運算,...