帶符號數有下面四種 編碼方式:
(1)原碼:一個數的正常二進制表示,最高位表示符號,數值0的原碼有兩種形式:+0(0 0000000)和 -0(1 0000000)。
(2)反碼:正數的反碼即原碼;負數的反碼是在原碼的基礎上,除符號位外,其他各位按位取反。數值0的反碼也有兩種形式:+0(0 0000000)和 -0(1 1111111)。
(3)補碼:正數的補碼即原碼;負數的補碼是在原碼的基礎上,除符號位外,其他各位按位取反,而后末位+1,若有進位則產生進位。因此數值0的補碼只有一種形式+0=-0=0 0000000。
(4)移碼:用作浮點運算的階碼,無論正數負數,都是將該原碼的補碼的首位(符號位)取反得到移碼。
機器字長為n時 各種碼制表示的帶符號數的取值范圍
(差別在於0的表示,原碼和反碼分+0和-0,補碼只有一個0,因此可以多表示一個)
總結:
①
字長=符號位+各位(例如機器字長為8,則為1+7,這個1即為符號位,7為其他各位,一共有八位數字)。
②
原碼符號位為0(正數)或1(負數),反碼是在原碼基礎上除符號位外其他各位取反,補碼是將反碼的末位取反,移碼是將補碼的符號位取反。