原碼,補碼,反碼,移碼

2021-06-22 10:06:07 字數 1954 閱讀 9366

為什麼有這些碼

定義機器字長為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

由於四種資料表示相互之間都存在一定的轉換關係,因為推薦先求其原碼,然後再根據該關係轉換到該碼制。

原碼,反碼,補碼,移碼

移碼 又叫增碼 是符號位取反的補碼,先將符號位取反,再取補碼,意思就是正數只將 變為1,負數將 變為0,再取補 x 1011 x 移 11011 符號位 1 表示正號 x 1011 x 移 00101 符號位 0 表示負號 一般用做浮點數的階碼,引入的目的是為了保證浮點數的機器零為全0。一 原碼 求...

原碼 反碼 補碼 移碼

如果機器字長為n,那麼乙個數的原碼就是用乙個n位的二進位制數,其中最高位為符號位 正數為0,負數為1。剩下的n 1位表示概數的絕對值。例如 x 101011 x 原 00101011 x 101011 x 原 10101011 位數不夠的用0補全。ps 正數的原 反 補碼都一樣 0的原碼跟反碼都有兩...

原碼 反碼 補碼 移碼

本人是初學者一枚,寫下筆記分享自己的一些見解,若有錯誤之處希望各位大神多多海涵,並請指出理解有誤的地方,謝謝 先確定用多少位元組儲存資料,假設這裡是1bytes 8bits,再把資料轉換為2進製的表達形式,把2進製的首位 最高位 最左的那一位作為符號位,0代表正數 1代表負數 十進位制數值中的 1轉...