作者:
g1990822 (什麼東西?!)
2020-05-30 19:38:51(代po)
最近在複習二進位減法的時候有一個地方卡了兩三天
感覺這問題很簡單但是我腦袋一時轉不過來..
問題就是:要如何判斷二進位用二補數算完後的結果到底是正數還是負數?
我記得之前上計概的時候,學校老師說(還抄在我的筆記上..):
(1)最高位元無進位表示結果為負,
若要轉為十進則要用將值以取反2補數還原為負數
而若最高位元有進位時表示結果為正,該進位直接捨棄
例如:算十進位的11-21 => 11 + (-21) =>要把21取2補數再和11相加
11的二進位為:0000 1011
21的二補數為:1110 1011
則: 0000 1011
+) 1110 1011
作者: cossetannie (paa) 2020-05-31 00:29:00
看最高位有沒有進位只是考慮有沒有發生overflowoverflow那結果當然不會對上面好像講錯了 忽略掉吧 如果你只是單純要看正負數直接看sign bit就可以了吧 應該跟進不進位沒什麼關係
若正加正變負,或附加負變正,才考慮overflow,但以你的舉例,負加負仍為負,因此直接不用管overflow的那個bit,後面的11011000就是-40在2補數的值了。是的,電腦判斷正負就靠最左邊的bit為0或1,因跐當overflow等那個bit運算完與結果的最左邊的bit相同(sign bit),表示沒有發生overflow,結果就是正確的,以你的例子就是後面那個8個bits直接當結果。
作者: cossetannie (paa) 2020-05-31 10:17:00
進位應該是用來判斷unsiged運算的結果正確與否
作者: wildwolf (可愛的哲哲) 2020-06-01 08:29:00
沒有人發現 8-bit 表示正負數的時候,沒有表示 -40 的方法嗎?一開始就要多一bit signed extension 計算
作者: cossetannie (paa) 2020-06-01 11:09:00
11011000不是-40嗎