Ⅰ 負數的補碼怎麼變回原碼
只需對其各位取反加一即可得到原碼。
從數學角度回答,假定在32位機器上。
設某負數X,則X+X(反)= 0xFFFFFFFF。
所以X+X(反)+1 = 0,可以得出 0 - X = X(反)+ 1。
這里 0 - X即定義為負數X的補碼,這樣,計算機在進行X-Y運算時實際可用X+Y(補)代替,硬體角度只需實現加法電路即可。
同樣的道理,0-X(補)=X(補)(反)+1 = X,即已知負數補碼只需對其各位取反加一即可得到原碼。
補碼的意義
補碼「模」概念的引入、負數補碼的實質、以及補碼和真值之間的關系所揭示的補碼符號位所具有的數學特徵,無不體現了補碼在計算機中表示數值型數據的優勢,和原碼、反碼等相比可表現在如下方面:
1、解決了符號的表示的問題。
2、可以將減法運算轉化為補碼的加法運算來實現,克服了原碼加減法運算繁雜的弊端,可有效簡化運算器的設計。
3、在計算機中,利用電子器件的特點實現補碼和真值、原碼之間的相互轉換,非常容易。
4、補碼表示統一了符號位和數值位,使得符號位可以和數值位一起直接參與運算,這也為後面設計乘法器除法器等運算器件提供了極大的方便。
總之,補碼概念的引入和當時運算器設計的背景不無關系,從設計者角度,既要考慮表示的數的類型(小數、整數、實數和復數)、數值范圍和精確度,又要考慮數據存儲和處理所需要的硬體代價。因此,使用補碼來表示機器數並得到廣泛的應用,也就不難理解了。
Ⅱ 負數的真值是多少
負數的真值是這個數的絕對值的二進制,這里指的是負整數。
真值:因為負數的機器數,最高位為符號位,所以機器數的形式值就不等於真正的數值,不像正數那麼「一目瞭然」。例如10000011,如果是負數,則bit7為1,其真正十進制數值為-125,而不是形式值131(當然如果不是負數,那麼確實就是131);所以,為了區別起見,將帶符號位的機器數對應的真正數值稱為機器數的真值;
Ⅲ 負數原碼11101001轉換為十進制為多少要過程
首先原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其餘位表示值.
由於負數所以第一位符號位為1然後從右開始計算1*2^0+1*2^3+1*2^5+1*2^6=1+8+32+64=9+96=105
所以最終得出結果為—105
Ⅳ 負數的原碼怎麼計算
Ⅳ 補碼和真值兩者怎麼換算
知道補碼,求真值,方法步驟,是非常簡單的。
你既不用求「反碼原碼」,也不用想著「符號位不變」。
「取反加一」或「減一取反」,都是不需要的。
你就直接進行【數 制 轉 換】即可。
比如:
有一個八位的補碼,是 1000 1110。
首位 1,既代表負數,也代表-128。
其餘都是正數:8 + 4 + 2 = 14。
求總和,故其真值就是:-114。
----------
另一個八位的補碼,是 0000 1110。
其真值就是:8 + 4 + 2 = +14。
Ⅵ 負數的原碼、補碼。請求。
原碼:最高位作為符號位,0為正,1為負。
反碼:正數的反碼是原碼,負數的反碼是原碼的符號位不變,數字位按位取反。
補碼:正數的補碼是原碼,負數的補碼是其反碼加1。
如:
11011011是負數的原碼,
10100100是這個負數的反碼,
10100101是它的補碼。
Ⅶ 二進制正,負數的原碼,反碼,補碼三者之間是什麼關系
2、符號位的表示:最常用的表示方法有原碼、反碼和補碼。
(1)原碼表示法:一個機器數x由符號位和有效數值兩部分組成,設符號位為x0,x真值的絕對值|x|=x1x2x3...xn,則x的機器數原碼可表示為:
[x]原=
,當x>=0時,x0=0,當x<0時,x0=1。
例如:已知:x1=-1011B,x2=
+1001B,則x1,x2有原碼分別是
[x1]
原=11011B,[x2]原=01001B
規律:正數的原碼是它本身,負數的原碼是取絕對值後,在最高位(左端)補「1」。
(2)反碼表示法:一個負數的原碼符號位不變,其餘各位按位取反就是機器數的反碼表示法。正數的反碼與原碼相同。
按位取反的意思是該位上是1的,就變成0,該位上是0的就變成1。即1=0,0=1
(3)補碼表示法:
首先分析兩個十進制數的運算:78-38=41,79+62=141
如果使用兩位數的運算器,做79+62時,多餘的100因為超出了運算器兩位數的范圍而自動丟棄,這樣在做78-38的減法時,用79+62的加法同樣可以得到正確結果。
模是批一個計量系統的測量范圍,其大小以計量進位制的基數為底數,位數為指數的冪。如兩位十進制數的測量范圍是1——9,溢出量是100,模就是102=100,上述運算稱為模運算,可以寫作:
79+(-38)=79+62
(mod
100)
進一步寫為
-38=62,此時就說
–38的補法(對模100而言)是62。計算機是一種有限字長的數字系統,因此它的運算都是有模運算,超出模的運算結果都將溢出。n位二進制的模是2n,
一個數的補碼記作[x]補,設模是M,x是真值,則補碼的定義如下:
例:設字長n=8位,x=-1011011B,求[x]補。
解:因為
n=8,所以模
M=28=100000000B,x<0,所以
[x]補=M+x=100000000B-1011011B=10100101B
注意:這個x的補碼的最高位是「1」,表明它是一個負數。對於二進制數還有一種更加簡單的方法由原碼求出補碼:
(1)正數的補碼表示與原碼相同;
(2)負數的補碼是將原碼符號位保持「1」之後,其餘各位按位取反,末位再加1便得到補碼,即取其原碼的反碼再加「1」:[x]補=[x]反+1。
下表列出
的8位二進制原碼,反碼和補碼並將補碼用十六進製表示。
真值
原碼(B)
反碼(B)
補碼(B)
補碼(H)
+127
0
111
1111
0
111
1111
0
111
1111
7F
+39
0
010
0111
0
010
0111
0
010
0111
27
+0
0
000
0000
0
000
0000
0
000
0000
00
-0
1
000
0000
1
111
1111
0
000
0000
00
-39
1
010
0111
1
101
1000
1
101
1001
D9
-127
1
111
1111
1
000
0000
1
000
0001
81
-128
無法表示
無法表示
1
000
0000
80
從上可看出,真值+0和-0的補碼表示是一致的,但在原碼和反碼表示中具有不同形式。8位補碼機器數可以表示-128,但不存在+128的補碼與之對應,由此可知,8位二進制補碼能表示數的范圍是-128——+127。還要注意,不存在-128的8位原碼和反碼形式。
Ⅷ 怎麼求一個負數的原碼和補碼
正數,本身就是補碼。
負數,就用它的正數,減一取反,即可得到補碼。
如:+9 的二進制是:0000 1001。
下面求-9 補碼:
先減一:0000 1001 - 1 = 0000 1000;
再取反:1111 0111。
所以有:-9 補碼 = 1111 0111。
這不就完了嗎!
簡不簡單?意不意外?
原碼反碼符號位,討論這些垃圾幹嘛?
這些垃圾,只是那些專家用來騙吃騙喝的!
Ⅸ 原碼,補碼,怎樣轉換為真值,求詳細解答。
原碼即真值,其中最高位為符號位,其餘均為數值位。
正數、零的原碼、反碼、補碼均相同。所以真正的求補的運算只對負數進行,且:補碼的補碼即是原碼。
對負數求補的過程是,保持符號位不變,對數值位取反後再加一。