按位與運算(a&b) | 按位或運算(a|b) | 按位異或(a^b) | |
---|---|---|---|
a(60)的二進制表示 | 0011 1100 | 0011 1100 | 0011 1100 |
b(13)的二進制表示 | 0000 1101 | 0000 1101 | 0000 1101 |
運算結果 | 0000 1100 | 0011 1101 | 0011 0001 |
結果的十進制表示 | 12 | 61 | 49 |
按位取反(~a) | 左移(a<<2) | 右移(a>>2) | |
---|---|---|---|
a(60)的二進制表示 | 0011 1100 | 0011 1100 | 0011 1100 |
運算結果 | 1100 0011 | 1111 0000 | 0000 1111 |
運算結果的十進制表示 | -61 | 240 | 15 |
注:關于原碼,補碼和反碼:原碼:假設機器字長為n,原碼就是用一個n位的二進制數,其中最高位為符號位:正數是0,負數是1。剩下的表示概數的絕對值,位數如果不夠就用0補全。反碼:在原碼的基礎上,符號位不變其他位取反,也就是就是0變1,1變0。補碼:在反碼的基礎上加1。 PS:正數的原、反、補碼都一樣,0的原碼跟反碼都有兩個,因為這里0被分為+0和-0。按位取反和反碼有一定的相似之處但又不盡相同(反碼符號位不取反)。在計算機中,是以補碼的形式存放數據的。1100 0011剛好對應-61。-61的原碼-> 1011 1101->反碼->1100 0010->補碼->1100 0011
運算符 | 描述 | 實例 |
---|---|---|
And
|
按位與運算符:參與運算的兩個值,如果兩個相應位都為 1,則該位的結果為 1,否則為 0 | (a & b) 輸出結果 12 ,二進制解釋: 0000 1100 |
Or
|
按位或運算符:只要對應的二個二進位有一個為 1 時,結果位就為 1。 | (a | b) 輸出結果 61 ,二進制解釋: 0011 1101 |
Xor
|
按位異或運算符:當兩對應的二進位相異(不同)時,結果為 1 | (a ^ b) 輸出結果 49 ,二進制解釋: 0011 0001 |
Not | 按位取反運算符:對數據的每個二進制位取反,即把 1 變?yōu)?0,把 0 變?yōu)?1 | (~a ) 輸出結果 -61 ,二進制解釋: 1100 0011 |
<< | 左移動運算符:運算數的各二進位全部左移若干位,由"<<"右邊的數指定移動的位數,高位丟棄,低位補 0。 | a << 2 輸出結果 240 ,二進制解釋: 1111 0000 |
>> | 右移動運算符:把">>"左邊的運算數的各二進位全部右移若干位,">>"右邊的數指定移動的位數 | a >> 2 輸出結果 15 ,二進制解釋: 0000 1111 |
嘗試以下示例來了解VB.Net中提供的所有位運算符:
Module BitwiseOp
Sub Main()
Dim a As Integer = 60 ' 60 = 0011 1100
Dim b As Integer = 13 ' 13 = 0000 1101
Dim c As Integer = 0
c = a And b ' 12 = 0000 1100
Console.WriteLine("Line 1 - Value of c is {0}", c)
c = a Or b ' 61 = 0011 1101
Console.WriteLine("Line 2 - Value of c is {0}", c)
c = a Xor b ' 49 = 0011 0001
Console.WriteLine("Line 3 - Value of c is {0}", c)
c = Not a ' -61 = 1100 0011
Console.WriteLine("Line 4 - Value of c is {0}", c)
c = a << 2 ' 240 = 1111 0000
Console.WriteLine("Line 5 - Value of c is {0}", c)
c = a >> 2 ' 15 = 0000 1111
Console.WriteLine("Line 6 - Value of c is {0}", c)
Console.ReadLine()
End Sub
End Module
當上述代碼被編譯和執(zhí)行時,它產生以下結果:
Line 1 - Value of c is 12
Line 2 - Value of c is 61
Line 3 - Value of c is 49
Line 4 - Value of c is -61
Line 5 - Value of c is 240
Line 6 - Value of c is 15
更多建議: