Ⅰ 計算機的原碼,反碼,補碼是怎麼回事可以舉例說明嗎
計算機的原碼,反碼,補碼是怎麼回事?
可以舉例說明嗎?
計算機中,並沒有原碼和反碼。
補碼是怎麼回事?
這得從「補數」談起。
計算機所計算的位數,是固定的,如八位機。。。
位數限定之後,就可以用「補數」代替負數,用加法實現減法運算。
如兩位十進制,-1,就可以用 +99 代替。
25 - 1 = 24
25 + 99 = (一百) 24
舍棄進位,只取兩位,這兩種演算法功能就是相同的。
99,就是-1 的補數。計算公式:補數 = 一百+負數。
一百,是兩位十進制數的計數周期。
-------------------------
計算機用二進制,補數,就改稱為:補碼。
八位二進制:0000 0000 ~ 1111 1111 (十進制 255)。
計數周期是:2^8 = 256。
所以,-1 補碼就是 256 + (-1) = 255 = 1111 1111(二進制)。
用不存在的「原碼反碼取反加一」來求,也是這個結果。
求負數補碼的計算公式: 周期 + 該負數。
正數,不用轉換。也可以說,正數自身就是補碼。
-------------------------
可以舉例說明嗎?
例如: 7-3 = 4。
用補碼的計算過程如下:
7 的補碼=0000 0111
-3的補碼=1111 1101
--相加-------------
得(1) 0000 0100 = 4 的補碼
舍棄進位,只保留八位作為結果,這就實現了 7-3。
Ⅱ 二進制正,負數的原碼,反碼,補碼三者之間是什麼關系
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位原碼和反碼形式。
Ⅲ 二進制正,負數的原碼,反碼,補碼三者之間是什麼關系
以8位二進制為例,
正數的原碼、反碼、補碼相同,
負數的反碼為:除符號位外,原碼各位取反,反碼加1,得負數的反碼.
下面就對於原碼,反碼,補碼詳細分析一下:
原碼:將一個整數,轉換成二進制,就是其原碼。如單位元組的5的原碼為:0000
0101;-5的原碼為1000
0101。
反碼:正數的反碼就是其原碼;負數的反碼是將原碼中,除符號位以外,每一位取反。如單位元組的5的反碼為:0000
0101;-5的反碼為1111
1010。
補碼:正數的補碼就是其原碼;負數的反碼+1就是補碼。如單位元組的5的補碼為:0000
0101;-5的原碼為1111
1011。
在計算機中,正數是直接用原碼表示的,如單位元組5,在計算機中就表示為:0000
0101。
負數用補碼表示,如單位元組-5,在計算機中表示為1111
1011。
Ⅳ 如何求一個正數或者負數的原碼,反碼,補碼比如+5
正數的原碼,反碼,補碼就是它的二進制數
負數原碼是它的二進制數
反碼是原碼各位取反0取反是1,1取反是0
補碼就是反碼加1
如+5的原碼,反碼,補碼都是1,101
而-5的原碼是0,101
反碼0,010
補碼0,011
正號用1表示
負號用0表示