原碼
定義機器字長爲n,若數值X是純整數
若數值X是純小數,對純小數的原碼計算是先將其轉換爲二進制(必須的~)
例:若機器字長爲8,則:
[+1]原=0 0000001 [-1]原=1 0000001 [+7]原=0 0000111 [+127]=0 1111111
[-127]原=1 1111111 [-7]原=1 1111000 [+0.5]原=0♢1000000 [-0.5]原=1♢1000000
對於0來說,其原碼有兩種表示方式:[+0]原=0 0000000,[-0]原=1 00000000
反碼
機器數的反碼可由原碼得到。若機器數爲正數,則其反碼與原碼一樣;如果機器數爲負數,則其反碼是對它的原碼(除符號位外)各位取反而得到的。也可用公式表示,若X是純整數,則:
若X是純小數,則:
例:若機器字長爲8,則:
[+1]反=0 0000001 [-1]反=1 1111110 [+7]反=0 0000111 [-7]反=1 1111000 [+127]反=0 1111111 [-127]反=1 0000000
[+0.5]反=0♢1000000 [-0.5]反=1♢0111111
對於0來說,反碼也有兩種表示方式:[+0]反=0 0000000 [-0]反=1 1111111
補碼
機器數的補碼可由原碼得到。若機器數爲正數,則其補碼與原碼一樣;如果機器數爲負數,則其補碼是對它的原碼(除符號位外)各位取反,再加1而得到的(也就是對其反碼再加1)。也可用公式表示,若X是純整數,則:
若X是純小數,則:
例:若機器字長爲8,則:
[+1]補=0 0000001 [-1]補=1 1111111 [+7]補=0 0000111 [-7]補=1 1111001 [+127]補=0 1111111 [-127]補=1 0000001
[+0.5]補=0♢1000000 [-0.5]補=1♢1000000
對於0來說,補碼有唯一的表示方式:[+0]補=0 0000000 [-0]補=0 0000000
移碼
機器數的移碼是在數X上增加一個偏移量來定義的,它常用於表示浮點數中的階碼。移碼和補碼的關係是符號位互爲反碼。如果機器字長爲n,規定該偏移量爲2n-1,移碼定義如下:
若X是純整數,[X]移=2n-1+X (-2n-1≤X<2n-1)
若X是純小數,[X]移=1+X (-1≤X<1)
例:若機器字長爲8,則:
[+1]移=1 0000001 [-1]移=0 1111111 [+7]移=1 0000111 [-7]移=0 1111001 [+127]移=1 1111111 [-127]移=0 0000001
[+0.5]移=1♢1000000 [-0.5]移=0♢1000000
對於0來說,補碼有唯一的表示方式:[+0]移=1 0000000 [-0]移=1 0000000
由於四種數據表示相互之間都存在一定的轉換關係,因爲推薦先求其原碼,然後再根據該關係轉換到該碼制。