原碼反碼補碼及補碼存在的必要性

2021-08-24 20:39:41 字數 825 閱讀 1155

如何計算

舉例:

補碼存在的必要性

再看乙個例子:

十進位制數

原碼反碼

補碼+127

0111 1111

0111 1111

0111 1111

-127

1111 1111

1000 0000

1000 0001

+00000 0000

0000 0000

0000 0000

-01000 0000

1111 1111

1000 0000

根據運算法則減去乙個正數等於加上乙個負數, 即: 1-1 = 1+(-1), 所以計算機被設計成只有加法而沒有減法, 而讓計算機辨別」符號位」會讓計算機的基礎電路設計變得十分複雜,於是就讓符號位也參與運算,從而產生了反碼。 

用反碼計算, 出現了」0」這個特殊的數值, 0帶符號是沒有任何意義的。 而且會有[0000 0000]和[1000 0000]兩個編碼表示0。於是設計了補碼, 負數的補碼就是反碼+1,正數的補碼就是正數本身,從而解決了0的符號以及兩個編碼的問題: 用[0000 0000]表示0,用[1000 0000]表示-128。 

注意-128實際上是使用以前的-0的補碼來表示的, 所以-128並沒有原碼和反碼。使用補碼, 不僅僅修復了0的符號以及存在兩個編碼的問題, 而且還能夠多表示乙個最低數。 這就是為什麼8位二進位制, 使用補碼表示的範圍為[-128, 127]。

128的補碼及原碼 反碼 補碼

乙個位元組佔8位 乙個字長為n的機器數能表示不同的數字的個數是固定的2 n個,n 8時2 n 256 用來表示有符號數,數的範圍就是 2 n 1 2 n 1 1,n 8時,這個範圍就是 128 127。用來表示無符號數,就不需要用一位來表示符號位,n位機器數全部用來表示是數值,這時表示數的範圍就是0...

關於原碼反碼及補碼

首先,在有符號數中,正數的原始碼,反碼和補碼都是相同的,首位為符號位 正數為0 後面的以二進位制數值表示其數值。接下來看負數 在原始碼中,負數也類似於正數的表示,不過符號位變為了1 原始碼表示負數是最簡單的也是最容易理解的,符號位表示正負號,其餘位轉化為二進位制即可。但是原始碼存在許多缺陷,比如0的...

原碼 反碼 補碼和 2147483648的補碼表示

在網上看到乙個挺奇怪的說法 乙個整數的原碼是這個數的絕對值的原碼,然後他就得出了 00000000 00000000 00000000 00000101 是 5的 原碼 然後他又說反碼就是32位的每一位都取反 比如 將00000000 00000000 00000000 00000101每一位取反,...