c++位運算符介紹

下面是C/C++位操做運算符列表,其中運算符優先級爲從上到下遞減,但<<,>>優先級相同。it

 

 

C/C++位操做運算符
操做符 功能 用法
~ 位求反 ~expr
<< 左移 expr1 << expr2
>> 右移 expr1 >> expr2
& 位與 expr1 & expr2
^ 位異或 expr1 ^ expr2
| 位或 expr1 | expr2

 

位簡介

位是數據存儲的最小單位。在 計算機中的二進制數系統中,位,簡記爲b,也稱爲比特,每一個0或1就是一個位(bit)。io

位操做詳解

咱們先來看看位運算操做符:& (按位與)、| (按位或)、^ (按位異或)、~ (按位取反)、>> (按位右移)、<< (按位左移)。table

一、&(按位與) 從概念上來說,就是將參與運算的兩個份量對應的每一位來作邏輯與運算,若二者都爲真(等於1),則結果才爲真(等於1)。不然都爲假(等於0)。
即:1 & 1 = 1 、1&0 = 0 、0&1 = 一、0&0 = 0
這裏咱們先來看看那一個8位二進制的例子:
7&8 = 0000 0111 & 0000 1000 = 0000 0000 = 0
7&6 = 0000 0111 & 0000 0110 = 0000 0110 = 6class

二、| (按位或) 即把參與運算的每一個份量對應的每一位來作邏輯或運算,即二者都爲假(爲0)時,才爲假(爲0),不然皆爲真。
即:0|0 = 0、1|0 = 一、0|1 = 一、1|1 = 1
來看看8位二進制的例子:
7|8 = 0000 0111 | 0000 1000 = 0000 1111 = 15
7|6 = 0000 0111 | 0000 0110 = 0000 0111 = 7二進制

三、^(按位異或) 即把參與運算的每一個份量對應的每一位來作異或運算,即二者相同爲假,不一樣爲真。
即:0|0 = 0、 1|0 = 一、0|1 = 一、 1|1 = 0
看下面的例子:
7^8 = 0000 0111 ^ 0000 1000 = 0000 0111 = 7
7^6 = 0000 0111 ^ 0000 0100 = 0000 0011 = 3數據

四、~(按位取反) 即把二進制位的每一位進行取反運算,簡而言之就是1變成0,0變成1。
直接看例子:
~7 = ~0000 0111 = 1111 1000 = 248計算機

5 >>(按位右移)把二進制位總體向右移動。
7>>1 = 0000 0111 >> 1 = 0000 0011 = 3
7>>2 = 0000 0111 >> 2 = 0000 0001 = 1
這裏右移等於除了2的N次方,N爲右移的位數。tab

6 <<(按位左移)這裏就不詳細說了,和右移相反。移動

 

而後講講異或,它有一個性質是, 兩次異或,能還原回來
例如 a=7,b=6;
a = a^b^b
咱們來看看那二進制的操做
a = 0111
b = 0110
c = a^b = 0001
a = c^b = 0111
相關文章
相關標籤/搜索