對補碼的瞭解

以8位有符號整數舉例,真值表示代表我們人的邏輯,機器值是數字在機器上的表示,原碼反碼補碼都是機器值

原碼:+0101011 -> 00101011 (真值->機器數)

           -0101011 -> 10101011

  • 對於正數與負數的加減運算,複雜繁瑣,符號位要另算(比兩數大小,誰大用誰的符號)

反碼:對於負數,符號位不變,其他取反

            -0101011  原碼:10101011

                             反碼:11010100

  • 我的理解是 反碼只是爲了推出補碼,+0101011 + -0101011 = 00101011 + 11010100 = 11111111(溢出的1去掉) 這對正數與負數的加減法也不起到作用,不能得到零,進一步引出補碼,如果將上述的結果+1,可以知道後續的4位都清零了,美好。

補碼:

對於一個負數,其補碼由其反碼+1,由上反碼可知,對+0101011 + -0101011,+1可使其結果溢出,從而達到清零的效果。

從真值角度分析,反碼 + 真值相反數 = 2^8 -1(真值表示) = 11111111

                             補碼 + 真值相反數 = 2^8 (真值表示)= 00000000(溢出) = 0(機器值)

補碼 = (2^8 - 真值相反數) = (2^8 + 真值) (真值表示)

其他正數 + 補碼 = 其他正數(真值表示)+ (2^8 + 真值) (真值表示)= (2^8 + 真值+其他正數) (真值表示,溢出)= (真值+其他正數) (真值表示)

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