原碼 反碼與補碼及其意義

2021-07-13 02:26:22 字數 1310 閱讀 7288

原碼、反碼與補碼及其意義

(1)數值資料的表示

我們把乙個數在計算機內被表示的二進位制形式稱為機器數,該數稱為這個機器數的真值。機器數有固定的位數,具體是多少位與機器有關,通常是8位或16位。機器數把真值的符號數位化,通常用最高位表示符號,0表示正,1表示負。例如,假設機器數為8位,最高位是符號位,那麼在定點整數的情況下,00101110和10010011的真值分別為十進位制數+46和-19。

(2)原碼:

乙個整數的原碼是指:符號位用0或1表示,0表示正,1表示負,數值部分就是該整數的絕對值的二進位制表示。

例如:假設機器數的位數是8,那麼:[+17]原=00010001 [-39]原=10100111

值得注意的是,由於所以數0的原碼不唯一,有「正零」和「負零」之分。

(2)反碼

在反碼的表示中,正數的表示方法與原碼相同;負數的反碼是把其原碼除符號位以外的各位取反(即0變1,1變0)。通常,用[x]反表示x的反碼。例如:

[+45]反 = [+45]原 = 00101101

[-32]原 = 10100000

[-32]反 = 11011111

(3)補碼

在補碼的表示中,正數的表示方法與原碼相同;負數的補碼在其反碼的最低有效位上加1。通常用[x]補表示x的補碼。例如:

[+14]補 = 10100100

[-36]反 = 11011011

[-36]補 = 11011100

注意:數0的補碼的表示是唯一的,即[0]補=[+0]補=[-0]補=00000000

現在我們來看看引進原碼、反碼與補碼這幾個概念到底有什麼意義。先看下面的例子。例如:x = 52,y = 38,求x – y的值。

[x]補 = 00110100

[-y]原 = 10100110

[-y]反 = 11011001

[-y]補 = 11011010

現在我們看看[x]補 + [-y]補 等於多少?

[52]補:   0 0 1 1 0 1 0 0

[-38]補:+) 1 1 0 1 1 0 1 0

1 0 0 0 0 1 1 1 0

自然丟失

我們可以看到,最高位丟失後,結果(14)正是52-38的值。從這裡我們不難體會到通過補碼可以把減法運算變成加法運算來做。這樣做有什麼意義呢?實事求是地說,引入補碼意義非同尋常,可以說是先輩們智慧型的結晶。因為,通過補碼運算,可以把減法運算變成加法運算;而乘法可以用加法來做,除法可以轉變成減法。這樣一來,加、減、乘、除四種運算「九九歸一」了。這對簡化cpu的設計非常有意義,cpu裡面只要有乙個加法器就可以做算術運算了。

原碼 反碼與補碼及其意義

原碼 反碼與補碼及其意義 1 數值資料的表示 我們把乙個數在計算機內被表示的二進位制形式稱為機器數,該數稱為這個機器數的真值。機器數有固定的位數,具體是多少位與機器有關,通常是8位或16位。機器數把真值的符號數位化,通常用最高位表示符號,0表示正,1表示負。例如,假設機器數為8位,最高位是符號位,那...

原碼 反碼與補碼

在計算機內,定點數有3種表示法 原碼 反碼和 補碼。所謂原碼就是 二進位制定點表示法,即最高位為符號位,0 表示正,1 表示負,其餘位表示數值的大小。反碼表示法規定 正數的反碼與其原碼相同 負數的反碼是對其原碼逐位取反,但符號位除外。補碼表示法規定 正數的補碼與其原碼相同 負數的補碼是在其反碼的末位...

補碼 原碼與反碼

古人說得好 溫故而知新 可惜現在都忙於 知新 沒有太多的時間去回顧原來的知識了。直到今天,遇到了實際問題,才突然感覺到原來很多東西在記憶中已經非常模糊,記不清了。溫故 系列主要是以的文章 觀點為主,也就是說多數將會是轉貼文章,因為這些基礎知識總會得到專家關注的,而且專家的解釋也會比我清楚得多。原碼 ...