因為人類有十個手指頭可以用來輔助計算,因此,人類的計數方式都採用十進位制。內容:
原碼反碼
補碼我們都知道計算機的內部計數是建立在二進位制之上,那麼為了能夠表示正負數,用數碼序列中的最高位作為符號位,0
代表整數,1
代表負數。
以 8 位的序列為例:
最高位其餘位
十進位制0
000000111
0000001
-1原碼的表達方式簡潔直觀,但是會帶來乙個問題,那就是當正數和負數相加時,比如10000001 + 00000001 = 10000010
,也就是說,造成了-1 + 1 = -2
的錯誤結果。這時候引入反碼:
定義:如果該樹是正數,其反碼等於原碼;如果該數是負數,其反碼等於其原碼的各位(符號位除外)取反。
比如,-1
原碼為10000001
,對應的反碼為11111110
。
那麼,11111110 + 00000001 = 11111111
,得到-1 + 1 = -0
的結果。
這麼做,解決了-1 + 1 = 0
的問題,但是又出現了乙個問題,那就是11111111 != 00000000
即-0 != 0
的問題。於是,引入了補碼。
定義:正數的補碼不變等於其原碼;而負數的補碼等於其反碼加1
。
比如,-1
原碼為10000001
,對應的反碼為11111110
,則其補碼為11111111
。
如此一來,11111111 + 00000001 = 00000000
得到了-1 + 1 = 0
的結果。
深入理解機器碼(原碼、反碼、補碼)和算數溢位
原碼 反碼 補碼
正數 原碼 反碼 補碼一樣 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 當...
原碼 反碼 補碼
數值在計算機中表示形式為機器數 計算機只能識別0和1,使用的是二進位制,而在日常生活中人們使用的 是十進位制,正如亞里斯多德早就指出的那樣,今天十進位制的廣泛採用,只不過我們絕大多數人生來具有10個手 指頭這個解剖學事實的結果.儘管在歷史上手指計數 5,10進製 的實踐要比二或三進製計數出現的晚.摘...