Go語言位運算

2022-09-09 01:15:17 字數 2113 閱讀 8485

一、二進位制

二進位制是逢二進一的進製,0,1是基本算符

在計算機內部,執行各種運算時,都是以二進位制的方式執行

二、原碼、反碼、補碼

對於有符號的而言:

二進位制的最高位是符號位,0表示正數,1表示負數

正數的原碼、反碼、補碼都一樣

負數的反碼=它的原符號位不變,其他位取反(0->1,1->0)

負數的補碼=它的反碼+1

0的反碼,補碼都是0

在計算機運算的時候,都是以補碼的方式來執行的

例子:

1 ===> 原碼[0000 0001] 反碼[0000 0001] 補碼[0000 0001]

-1 ===> 原碼[1000 0001] 反碼[1111 1110] 補碼[1111 1111]

三、位運算子

運算子描述

&按位於,是雙目運算子,其功能是參與運算的兩數各對應的二進位相與,運算規則是:同時為1結果為1,否則為0

|按位或,是雙目運算子,其功能是參與運算的兩數各對應的二進位相或,運算規則是:有乙個位1,結果為1,否則為0

^按位異或,是雙目運算子,其功能是參與運算的兩數各對應的二進位相異或,運算規則是:當二進位不同時,結果為1,否則為0

<<

左移,是雙目運算子,其功能是把"<<"左邊的運算數的各二進位全部左移若干位,高位丟棄,低位補0。左移n位就是乘以2的n次方,運算規則是:符號位不變,低位補0

>>

右移,是雙目運算子,其功能是把">>"左邊的運算數的各二進位全部右移若干位。右移若干位就是除以2的n次方,運算規則是:低位溢位,符號位不變,並用符號位補溢位的高位

案例1:

2&3

2&3

2的補碼:0000 0010

3的補碼:0000 0011

2&3: 0000 0010 ==> 2

2&3的結果為2

案例2

2|3

2|3

2的補碼:0000 0010

3的補碼:0000 0011

2|3: 0000 0011 ==> 3

2|3的結果為3

案例3

2^3

2^3

2的補碼:0000 0010

3的補碼:0000 0011

2^3: 0000 0001 ==> 1

2^3的結果為1

案例4

-2^2

-2^2

-2的原碼:1000 0010 ==> 反碼:1111 1101 ==> 補碼:1111 1110

2的補碼: 0000 0010

-2^2: 1111 1100(補碼)==> 反碼:1111 1011 ==> 原碼: 1000 0100 ==> -4

-2 ^ 2的結果為-4(注意-2^2的結果是負數,要從補碼反推出原碼)

案例5

8>>2

8的補碼:0000 1000

8>>2: 0000 0010 ==>2

8>>2的結果為2

案例6

8<<2

8的補碼:0000 1000

8<<2: 0010 0000 ==>32

8<<2的結果為32

案例7

-8>>2

-8的原碼: 1000 1000 ==> 反碼: 1111 0111 ==> 補碼: 1111 1000

-8>>2: 1111 1110(補碼) ==>反碼:1111 1101 ==>原碼:1000 0010 ==>-2

-8>>2的結果為-2(注意-8>>2的結果是負數,要從補碼反推出原碼)

c語言位運算

c語言提供的位運算子列表 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位的結果值為1,否則為0 按位或 兩個相應的二進位制位中只要有乙個為1,該位的結果值為1 按位異或 若參加運算的兩個二進位制位值相同則為0,否則為1 取反 是一元運算子,用來對乙個二進位制數按位取反,即將0變1...

C語言位運算

c語言位運算 位運算應用口訣 清零取反要用與,某位置一可用或 若要取反和交換,輕輕鬆鬆用異或 移位運算 1 它們都是雙目運算子,兩個運算分量都是整形,結果也是整形。2 am p 3 amp amp amp qu ot 右 移 右邊 的位被擠 掉。對於 左邊移出 的空位,如果是正 數則空位 補0,若 ...

C語言位運算

位運算是指按二進位制進行的運算。在系統軟體中,常常需要處理二進位制位的問題。c語言提供了6個位操作 運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。c語言提供的位運算子列表 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位...