計算機組成原理筆記——原碼,反碼,補碼,移碼,有符號數,無符號數

在這裏插入圖片描述
✪ 無符號數(默認爲整數)

無符號數顧名思義也就是不帶符號的數
若機器字長爲8位,無符號數的表示範圍 0~2^8-1 , 即0~255

✪ 有符號數(0表示正號,1表示負號)

① 小數表示:如(符號位與數字位用.(點)表示)
+0.1101在機器中表示爲 0.0101
- 0.0110在機器中表示爲 1.00110

②整數表示:如(符號位與數字位用,(逗號)表示)
+1101 在機器中表示爲 0,1101
- 1101 在機器中表示爲 1,1101

0表示正號,1表示負號,這樣把符號數字化得數成爲機器數,把帶“+”,“-”的數稱爲真值
若機器字長爲8位,有符號數的表示範圍 -2^8- 1 2^8-1 , 即0~255

✪ 原碼 ✪

計算機中最簡單的表示方式,符號位+真值位表示
0,10011 1,1001 0,0000 1,11111 這都是可以表示原碼

✪ 反碼 ✪

正數反碼:等於原碼 。 如:0,0010的反碼還是爲0,0010
負數反碼:符號位不變,數值位與原碼數值位相反。如1,1010的反碼爲1,0101

✪ 補碼 ✪

正數補碼:等於原碼 。 如:0,0010的補碼還是爲0,0010
負數補碼:符號位不變,反碼的數值位+1。
負數補碼如1,1010的反碼爲1,0101,然後反碼數值位加1求補碼
在這裏插入圖片描述
✪ 移碼 ✪

當真值用補碼錶示時,由於符號位和數值部分一起編碼,由於計算機無法分辨“,”逗號,所以人們很難從補碼的形式上辨別其大小,例如:0,1010和1,1010,顯而易見前者大於後者,而從代碼形式上,會作爲5位二進制代碼比較,即01010<11010,其實恰恰相反;所以,有了移碼
                 移碼定義:
在這裏插入圖片描述
n 表示整數位數,x是指真值(帶符號位的數)

例題1:如 X=+10100,則X的移碼是多少?

解析:題意可知n=5
[X]移=2^5 + 10100 = 1,10100 (用逗號將符號位和數值位分隔開)

例題2:如 X= - 10100,則X的移碼是多少?

解析:題意可知n=5
[X]移=2^5 - 10100 = 0,01100 (用逗號將符號位和數值位分隔開)

✪ 0的原反補移碼

0有+0 和 -0 之分

假設 [+0]原=0,000 則 [+0]反=0,000 [+0]補=0,001 [+0]移=2^3+0=1,000

假設 [- 0]原=1,000 則 [- 0]反=1,111 [ -0]補=0,001 [- 0]移=2^3 -0=1,000

所以的補碼和移碼是唯一的

✪ 習題練習

1.若寄存器內容爲1111 1111,若它等於+127,則爲()
A、原碼
B、補碼
C、反碼
D、移碼
我的答案:D
解析:
A.若爲原碼,則它等於1,1111111= -(2^7-1)= -127
B.若爲補碼,則它原碼爲1,0000001= - 1
C.若爲反碼,則它原碼爲1,0000000= - 0
D.若爲移碼,移碼=真實值 - 2^(n-1),這裏n=8,所以真實值=移碼 - 2 ^7=1111 1111-1000 0000=0,111 1111=+127

2.若寄存器內容爲0000 0000,若它等於-128,則爲()
A、原碼
B、補碼
C、反碼
D、移碼
我的答案:D
解析:
A.若爲原碼,則它等於0,0000000= +0
B.若爲補碼,則它原碼爲0,0000000= +0,由於0的補碼只有一個,即爲0
(補碼另一種方法:補碼=真實值 + 2^n,這裏n=8,真實值=補碼-2 ^8=0000 0000 + 10000 0000=0,000 0000(前面的1捨去))
C.若爲反碼,則它原碼爲0,1111111= +127
D.若爲移碼,移碼=真實值 - 2^(n-1),這裏n=8,所以真實值=移碼 - 2 ^7=0000 0000-1000 0000=1,1000 0000= - 128

3.若寄存器內容爲1111 1111,若它等於-1,則爲()
A、原碼
B、補碼
C、反碼
D、移碼
我的答案:B
解析:
A.若爲原碼,則它等於1,111 1111=-127
B.若爲補碼,則它原碼爲1,0000001= - 1
C.若爲反碼,則它原碼爲1,000 000= -0
D.若爲移碼,移碼=真實值 - 2^(n-1),這裏n=8,所以真實值=移碼 - 2 ^7=1111 1111-1000 0000=0,111 1111=+127

4.若寄存器內容爲1000 0000,若它等於-0,則爲()
A、原碼
B、補碼
C、反碼
D、移碼
我的答案:A
解析:
A.若爲原碼,則它等於1,000 0000=- 0
B.若爲補碼,則它原碼爲1,000 0000= -0
C.若爲反碼,則它原碼爲1,111 1111= - 127
D.若爲移碼,移碼=真實值 - 2^(n-1),這裏n=8,所以真實值=移碼 - 2 ^7=1000 0000-1000 0000=0,000 0000=+0

5.在機器數( )中,零的表示形式是唯一的。
A、原碼
B、補碼
C、補碼和反碼
D、原碼和反碼
我的答案:B
✪ 習題小總結:

移碼 = 真實值 - 2^(n-1), n爲存儲空間長度(機器數的長度)
補碼 = 真實值 + 2^n, n爲存儲空間長度(機器數的長度)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章