c 按位操作符

2021-06-21 06:32:59 字數 1448 閱讀 9112

位運算是指按二進位制進行的運算。在程式中,常常需要處理二進位制位的問題。c/c++語言提供了6個位操作運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。

在實際應用中,建議用unsigned整型運算元,因為帶符號運算元可能因為不同機器結果不同。

c++和c的位操作運算子完全相同,但c++中增加了bitset標準庫來支援位集操作,具體內容請參考或者這些鏈結都是《c++ primer中文版》中的內容,大家也可以直接看書。

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

c/c++位操作運算子

操作符功能用法

~位求反

~expr

<<

左移expr1 << expr2

>>

右移expr1 >> expr2&位與

expr1 & expr2

^位異或

expr1 ^ expr2|位或

expr1 | expr2

**示例如下:

1

#include

<

iostream

>

2using

namespace

std;

3int

main()

運算結果如下:

~x=65532

~x=-4

x&y=1

x^y=6

x|y=7

x<<1=6

y>>1=2

**解釋如下:

short為16位整數,故x,y的二進位制表示如下:

x=3(00000000 00000011)

y=5(00000000 00000101)

~ 00000000 00000011

= 11111111 11111100(65532或者-4)(至於為什麼同樣的二進位制位表示的數不一樣,這與計算機的數值表示有關,具體原因可搜尋「補碼」)

00000000 00000011

& 00000000 00000101

= 00000000 00000001(1)

00000000 00000011

^ 00000000 00000101

= 00000000 00000110(6)

00000000 00000011

|  00000000 00000101

= 00000000 00000111(7)

00000000 00000011<<1

= 00000000 00000110(6)

00000000 00000101>>1

= 00000000 00000010(2)

&=^=

|= 這三個運算子就是跟+=差不多,

a &= b

就是a先和b與,然後再賦給a。

按位操作符

按位操作符 用來操作整數基本資料型別中的單個 bit 對兩個引數中對應的位執行布林代數計算,最終生成乙個結果 1.二元操作符 如果兩個輸入位都是1,則按位 與 操作符 生成乙個輸出位1,否則生成乙個輸出位0,如果兩個輸入位有乙個是1,則按位 或 操作符 生成乙個輸出位1,只有兩個輸入位都是0時,才會...

Java移位操作符以及按位操作符

按位操作符 針對兩個整數引數中的對應位執行布林代數運算,並生成乙個結果。按位與 如果兩個輸入位都是1則生成乙個輸出位1,否則生成乙個輸出位0。按位或 如果兩個輸入位只要有一位是1則生成乙個輸出位1.否則生成乙個輸出位為0。按位異或 如果兩個輸入位只有其中一位是1那麼生成輸出位1,否則生成乙個輸出位為...

C C 關於按位操作符

這一篇就簡單講下c 按位操作符使用方法。一 移位操作符 2位元組16位下 1.左移操作符 句法 value shift 將指定值的所有位向左移動指定位數並將結果返回 例如 int n1 568 int n2 n1 3 值也可以用字面值 int n2 568 3 std cout n2 std end...