負數的二進位制表示

2022-09-20 15:00:13 字數 1079 閱讀 3031

原碼反碼

補碼如果你和我一樣,有些忘記這三個名詞分別是什麼意思了,也不必急著新建乙個瀏覽器視窗去查它們的意思。因為,這篇文章就是圍繞著這三個名詞來的。

首先,負數在計算機中以補碼的形式儲存。我覺得這有必要說在前面。

1個位元組只能表示258個數,乙個位元組可以表示的有符號數的範圍就是-128-127。

作為有符號數,我們用乙個位元組的最高位作為符號位。並且我們規定,正數的符號位為0,負數的符號位為1。

剩下的7位可以表示2^7個數,算上正負兩種情況,正好是258個數。

0在計算機中儲存為0000 0000,這似乎不難理解。

正如你所想,我們可以按照無符號數的表示方法來表示有符號數正數。那麼,1-127我們可以依次表示為0000 0001 - 0111 1111. 沒錯,這很合理。

如果你在想是否可以用1000 0001 - 1111 1111依次表示-1到-127. 但是,如果這樣的話,我們稍加觀察就會發現,1000 0000似乎被我們遺忘了,導致現在乙個位元組只表示了255個數。

實際上,1000 0000表示最小的負數,就是這裡的-128. 而且,1000 0001 - 1111 1111並不是-1到-127的二進位制表示,正好相反,1000 0001 - 1111 1111它是-127到-1的二進位制表示。

現在該回到前面說的了,「負數在計算機中以補碼的形式儲存」。那麼,什麼是補碼?

這裡,先說下原碼。首先,絕對值相同的數的原碼相同(不包括符號位)。那麼我們說正數的原碼應該就很好理解了,就是正數的二進位制表示。

再引出另乙個概念,反碼。反碼就是原碼按位取反的結果。

注意,正數的原碼、反碼和補碼一樣,均是原碼的形式。

如果,原碼和反碼的概念我們已經回憶起來了,那該說下補碼了。

補碼是反碼加1之後的結果。

舉個例子

十進位制  原碼        反碼       補碼       二進位制

86     0101 0110           0101 0110   0101 0110    0101 0110

-86      1101 0110     1010 1001   1010 1010    1010 1010

似乎一切都說的通了。

負數二進位制表示

負數在計算機中用補碼表示。這是教科書上到表示,由於時間久遠,又由於上課沒好好學,以至於補碼是啥,在心中沒留下任何到痕跡,補習一下。原碼 整數在記憶體中用原碼表示,即按絕對值大小轉換成二進位制 如 b 00000101 b 是 b 5 b 到二進位制表示 反碼 將二進位制數按位取反,所得的新二進位制數...

負數的二進位制表示

原碼 反碼 補碼 反碼 1 負數的二進位制表示法 比如,假設有一 int 型別的數,值為5,那麼,我們知道它在計算機中表示為 00000000 00000000 00000000 00000101 5轉換成二制是101,不過int型別的數占用4位元組 32位 所以前面填了一堆0。現在想知道,5在計算...

負數的二進位制表示

原碼 正數原碼就是其二進位制。負數的原碼就是其二進位制,並將最高位作為符號位設為1。eg 1 原碼為 1000 0001複數進行運算時用補碼表示負數補碼 負數原碼不考慮最高符號位的原碼的反碼 1 eg 1 的補碼為 1111 1110 反碼 1 1111 1111 在二進位製碼中,為了區分正負數,採...