關於原碼,補碼的筆記

2022-06-12 01:30:09 字數 1435 閱讀 2903

一,原碼

原碼表示法規定:用符號位和數值表示帶符號數,正數的符號位用 「0」 表示,負數的符號位用 「1」 表示,數值部分用二進位制形式表示。

如:在八位編碼下,原碼 取值從  -2^7+1~+2^7-1 

x[原] = 0111 1111    x= 2^7-1 

x[原] = 0000 0000   x=+0

x[原] = 1000 0000   x=-0

x[原] = 1111 1111     x=-2^7+1

原碼的缺陷:1,因為有著正0 和 負0,所以 原碼只能表示 2^8-1 個數。

2,正負原碼無法直接相加,在計算機內部計算麻煩。因為要把符號位和數值位分開計算。

如 2+(-1)= 1,但  00000010 +10000001=10000011 其真值為 -3

因為原碼有著這樣的缺陷,所以在計算機內部,更常用的數值表示方法是補碼。

二,補碼

補碼表示法規定:正數的補碼與原碼相同,負數的補碼為對該數的原碼除符號位外各位取反,然後再加一

如: 在八位編碼下,補碼 取值從  -2^7~+2^7-1 

設真值 x=1,y=--2

則 [x]原=0000 0001  [x]補=0000 0001

[y]原=1000 0010  [y]補=1111 1110

另外:補碼中 +0 和 -0 的補碼是相同的。設  a = +0,b = -0

由於 a 是正數,所以補碼與原碼相同,所以 

[a]補 = 0000 0000

而 [b]原=1000 0000  本來  [b]補= 1 0000 0000 ,

但由於計算機的定長,進製的話就被截掉了,所以 1 被截掉了,於是

[b]補 = 0000 0000 

這樣 +0 和 -0 就統一了。

發現:由於  +0 和 -0 共用相同的補碼,所以相對原碼來說,就多了乙個不用的補碼:

[n]補 = 1000 0000

於是規定   [-128]補 = 1000 0000  

三,比較 

在計算機中 正數表示形式 都是一樣的  但 負數 卻有三種表示方法:原碼,反碼,補碼 

三碼之間的比較:

其中 原碼表示形式簡單,適於乘除運算 ,

但其加減運算就比較複雜了,因為要區分正負號 與數值部分,較為麻煩。

於是為了解決減法,引入了 反碼和補碼,

反碼和補碼 其減法可以用加法實現,且數的符號位可以和數值一樣參與運算。 

至於說反碼和補碼有什麼區別的話, 可以將補碼認為是反碼的優化版。

其實 反碼和補碼 就差在那個 末位加一上。

這一加 1,不僅統一了反碼 +0 和 -0 的問題,

還擴大的反碼數值表示範圍 (其實也就多加了乙個數)       

春宵  宋 蘇軾

春宵一刻值千金,花有清香月有陰。

歌管樓台聲細細,鞦韆院落夜沉沉。

學習筆記 關於原碼與補碼

二進位制原碼 最高位為符號位,最高位為0時表示正數,為1時表示負數,如 1111 1111 127 0111 1111 127 此時稱為原碼 true form 但原碼不能直接參與運算,如 1000 0001 1 0000 0001 1 1 1 1000 0001 0000 0001 1000 00...

關於原碼反碼及補碼

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

關於原碼,補碼和反碼

數值在計算機中表示形式為機器數,計算機只能識別0和1,使用的是二進位制,而在日常生活中人們使用的是十進位制.數值有正負之分,計算機就用乙個數的最高位存放符號 0為正,1為負 這就是機器數的原碼了.假設機器能處理的位數為8.即字長為1byte,原碼能表示數值的範圍為 127 0 0 127 共256個...