1. 程式人生 > >c++位運算符介紹

c++位運算符介紹

邏輯或 進行 order 存儲 cap exp 優先 example 右移

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

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

位簡介

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

位操作詳解

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

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

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

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

4、~(按位取反) 即把二進制位的每一位進行取反運算,簡而言之就是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為右移的位數。

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

然後講講異或,它有一個性質是,兩次異或,能還原回來 例如 a=7,b=6; a = a^b^b 我們來看看那二進制的操作 a = 0111 b = 0110 c = a^b = 0001 a = c^b = 0111

c++位運算符介紹