原碼就是帶一位符號位的二進位制程式碼反碼正數的反碼和原碼相同負數的反碼是除符號位各位求反補碼正數的補碼和原碼相同負數的補碼是反碼加一
還有一種記憶方法
反碼
-3 = 1011(原碼)= 1100(反碼)
(-3的反碼)1100 = 1111-011(-3原碼非符號位即-3的模)
補碼
-3 = 1011(原碼)=1101(反碼)
(-3的補碼)1101=10000-011(-3原碼非符號位即-3的模)
=1111+1-011
顯然就是所謂的反碼加一
我們先簡單考慮結果只有正數的情況。想像一個類似鐘錶的錶盤,區別在於擁有16個刻度而不是12個(這裡多少個刻度無關緊要,只是為了對接4位二進位制數才把12換成16)。
思考這裡,相當於將在6位置的錶針向逆時針撥回三格,可以考慮另一種做法,將錶針向順時針撥動13(16 - 3)格。顯然這是可行的,也就是說得到了相同的結果。
換用算式表示 6 - 3 變為 6 + (16 - 3)
但是發現,變化之後的計算結果為13。不妨將13定義為-3
按照上面的思路換減法為加法,3 - 6 = 3 + (16 - 6) = 13
按照我們上面的規定,13定義為了- 3,剛好是正確的結果。我們就是利用這個迴圈的原理,透過減小系統能夠表示的最大值,來完成轉減法為加法的過程。這個過程有利於計算機的電路設計。
原碼就是帶一位符號位的二進位制程式碼反碼正數的反碼和原碼相同負數的反碼是除符號位各位求反補碼正數的補碼和原碼相同負數的補碼是反碼加一
還有一種記憶方法
反碼
負數的反碼即為該計數系統所能夠表示最大值減去負數的模(負數除去符號位),例如:-3 = 1011(原碼)= 1100(反碼)
而該計數系統表示最大值為1111(-3的反碼)1100 = 1111-011(-3原碼非符號位即-3的模)
觀察便發現這就是過程中所說的除符號位各位取反。補碼
負數的補碼即為該計數系統的容量減去負數的模(除去符號位),例如-3 = 1011(原碼)=1101(反碼)
而該計數系統的容量為16(-8~7)(-3的補碼)1101=10000-011(-3原碼非符號位即-3的模)
觀察便發現(-3的補碼)1101=10000-011(-3原碼非符號位即-3的模)
=1111+1-011
顯然就是所謂的反碼加一
我們先簡單考慮結果只有正數的情況。想像一個類似鐘錶的錶盤,區別在於擁有16個刻度而不是12個(這裡多少個刻度無關緊要,只是為了對接4位二進位制數才把12換成16)。
考慮減法 6 - 3 = 3思考這裡,相當於將在6位置的錶針向逆時針撥回三格,可以考慮另一種做法,將錶針向順時針撥動13(16 - 3)格。顯然這是可行的,也就是說得到了相同的結果。
換用算式表示 6 - 3 變為 6 + (16 - 3)
但是發現,變化之後的計算結果為13。不妨將13定義為-3
接下來便考慮另一個算式 3 - 6 = - 3按照上面的思路換減法為加法,3 - 6 = 3 + (16 - 6) = 13
按照我們上面的規定,13定義為了- 3,剛好是正確的結果。我們就是利用這個迴圈的原理,透過減小系統能夠表示的最大值,來完成轉減法為加法的過程。這個過程有利於計算機的電路設計。
仔細觀察變減法為加法的過程,正是求補的過程,而負數的補碼也就確定了下來。