運算(原碼 補碼 反碼)

2021-10-22 07:31:07 字數 1378 閱讀 9365

>>>表示不帶符號向右移動二進位制數,移動後前面統統補0;兩個箭頭表示帶符號移動,

沒有《這種運算子,因為左移都是補零,沒有正負數的區別。

如 -12 的二進位制為:1111  1111  1111  1111  1111  1111  1111  0100;

-12 >> 3 即帶符號右移3位,結果是:1111  1111  1111  1111  1111  1111  1111  1110,十進位制為: -2;

-12 >>> 3 就是右移三位,前面補零,為:0001  1111  1111  1111  1111  1111  1111  1110,十進位制為:536870910。

在計算機中是以數值是以該數的補碼形式來表示.

正數:原碼=反碼=補碼

+12原碼:0,1100

反碼:0,1100

補碼:0,1100

負數:反碼=除符號位原碼各位取反; 補碼=反碼+1

-12原碼:1,1100

反碼:1,0011

補碼:1,0100

note:逗號之前為符號位

[x]補碼 : 連同符號位在內,每位取反,末位加一,即得到[-x]補碼.

例:8位機器字長,[-2]的補碼表示為[11111110]

各位取反(包括符號位)[00000001],末位加一為[00000010]即[2]的補碼

8位機器字長,[12]的補碼表示為[00001100]

各位取反(包括符號位)[11110011],末位加一為[11110100]即[-12]的補碼

system.out.println(integer.tobinarystring(-12));

system.out.println(integer.tobinarystring(12));

輸出結果:

11111111111111111111111111110100

1100

由結果可看出:計算機中負數的二進位制是以負數的補碼形式表示

<<(左移)和》(右移)。移位運算子組成的表示式也屬於算術表示式,其值為算術值。左移運算是將乙個二進位制位的運算元按指定移動的位數向左移位,移出位被丟棄,右邊的空位一律補0。右移運算是將乙個二進位制位的運算元按指定移動的位數向右移動,移出位被丟棄,左邊移出的空位或者一律補0,或者補符號位,這由不同的機器而定。在使用補碼作為機器數的機器中,正數的符號位為0,負數的符號位為1,

20的二進位制為 0001 0100,右移2位後為 0000 0101,則結果就為 res =5;

res = -20 >> 2;

-20的二進位制為 1110 1011,右移2位,此時高位補0,即 0011 1010,結果為 res =- 5;

左移沒有《運算子!

原碼 反碼 補碼運算規則

在學習原碼,反碼和補碼之前,需要先了解機器數和真值的概念.1 機器數 乙個數在計算機中的二進位制表示形式,叫做這個數的機器數。機器數是帶符號的,在計算機用乙個數的最高位存放符號,正數為0,負數為1.比如,十進位制中的數 3 計算機字長為8位,轉換成二進位制就是00000011。如果是 3 就是 10...

原碼 反碼 補碼

正數 原碼 反碼 補碼一樣 7 原 0 0000111 b 7 反 0 0000111 b 7 補 0 0000111 b 負數 原碼就是原來的表示方法 反碼是除符號位 最高位 外取反 補碼 反碼 1 7 原 1 0000111 b 7 反 1 1111000 b 7 補 1 1111001 b 當...

原碼 反碼 補碼

正數 原碼 反碼 補碼一樣 7 原 0 0000111 b 7 反 0 0000111 b 7 補 0 0000111 b 負數 原碼就是原來的表示方法 反碼是除符號位 最高位 外取反 補碼 反碼 1 7 原 1 0000111 b 7 反 1 1111000 b 7 補 1 1111001 b 當...