碼制 原碼 反碼 補碼 移碼

2021-10-09 14:55:33 字數 1034 閱讀 3330

1.原碼即將數值直接轉換為二進位制數,首位為符號位(0表示正數,1表示負數)

例如:若機器字長n為8

則+1=0 0000001 -1=1 0000001

+127=0 1111111 -127=1 1111111

數值0的原碼有兩種形式:

+0=0 0000000 -0=1 0000000

2.反碼

正數的反碼與其原碼相同!

負數的反碼:在原碼的基礎上,除符號位不變,其餘各位取反(即0變1,1變0)

例如:-1=1 1111110

-127=1 0000000

-45=1 1010010

數值0的反碼有兩種:

+0=0 0000000 -0=1 1111111

3.補碼

正數的補碼與其原碼相同!

負數的補碼:等於其反碼的末位加1(即-1的反碼為1 1111110,末位加1則變為1 1111111)

例如:-127=1 0000001

-45=1 1010011

數值0的補碼有唯一形式:

+0=-0=0 0000000

移碼

移碼是在數x上增加乙個偏移量來定義,如果機器字長為n,規定的偏移量為2^n-1(即2的n-1次方)

例如機器字長為8,則偏移量為2^7,相當於給數x按位相加1 0000000

實際上,在偏移量為2^n-1的情況下,只要將補碼的符號位取反便可得到相應的移碼

例如:+1=1 0000001 -1=0 1111111

+127=1 1111111 -127=0 0000001

+45=1 0101101 -45=0 1010011

數值0的移碼有唯一形式:

+0=1 0000000 -0=1 0000000

原碼,補碼,反碼,移碼

為什麼有這些碼 定義機器字長為n,若數值x是純整數 若數值x是純小數,對純小數的原碼計算是先將其轉換為二進位制 必須的 例 若機器字長為8,則 1 原 0 0000001 1 原 1 0000001 7 原 0 0000111 127 0 1111111 127 原 1 1111111 7 原 1 ...

原碼,反碼,補碼,移碼

移碼 又叫增碼 是符號位取反的補碼,先將符號位取反,再取補碼,意思就是正數只將 變為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的原碼跟反碼都有兩...