某位問的
標題: [問題] 負99的Excess-3碼該怎麼求?!(8bit)
時間: Fri Nov 7 10:49:48 2008
負99的Excess-3碼該怎麼求?!(8bit)
1.我知道Excess-3碼是由BCD碼加3而來,但是當負的時候應該怎麼求?
2.我知道補數的應用在減法,如計算M-N時,需先將N取補數,再與M相加,
所以表示如果單獨想知道負N,應該可以對N取補數,但是有r補數減法與r-1補數減法
,所以當求負數N的時候該選擇對N取哪個補數呢?
以上可能觀念錯誤~~請多多指教~~
以下是我的回答:
以下發表個人淺見:
首先,超三碼(Excess-3)是屬於二進位碼十進制
與8421碼(權位碼)的二進位碼二進制不同
8 4 2 1 Excess-3
_________________________________________
0 0 0 0 0 0 0 1 1 (3)
1 0 0 0 1 0 1 0 0 (4)
2 0 0 1 0 0 1 0 1 (5)
3 0 0 1 1 0 1 1 0 (6)
4 0 1 0 0 0 1 1 1 (7)
5 0 1 0 1 1 0 0 0 (8)
6 0 1 1 0 1 0 0 1 (9)
7 0 1 1 1 1 0 1 0 (10)
8 1 0 0 0 1 0 1 1 (11)
9 1 0 0 1 1 1 0 0 (12)
10 1 0 1 0 01000011
我認為若以Excess-3表示 -99 : -11001100
若以有號數表示 : SXXXXXXX 其中,S is a Sigh bit
故 99以符號大小表示 : 01100011
-99以符號大小表示 : 11100011
99以符號1補數表示 : 01100011
-99以符號1補數表示 : 10011100
99以符號2補數表示 : 01100011
-99以符號2補數表示 : 10011101
利用加法與補數可以取代減法
如同原PO所說可使用r補數或是r-1補數進行減法
其實兩種方法皆可使用,所得答案會相同
差別在於利用r-1補數進行減法運算時
若有End Carry,EC(端進位)
r-1補數必須將其結果加1
r補數則不需要
For example,M = 1010100B N = 1000100B ,M-N?
(1) Using r's complement
Step1: N取2補數
1000100 → 0111100
Step2: M + the 2's complement of N
1010100
+ 0111100
____________
1 0010000
"EC"
Because that is using r's complement method, ignoring the end carry.
Therefore, the answer is 0010000
(2) Using r-1's complement
Step1:N取1補數
1000100 → 0111011
Step2: M + the 1's complement of N
1010100
+ 0111011
___________
1 0001111
"EC"
+ 1 Becauase that is using r-1's complement method, we need to
___________ add 1 again. The answer is 0010000
0010000
以上
希望各位指教
----------------------------------------------------------------------------------------------
歡迎大家批評指教唷^^