機器數,原碼,反碼,補碼,移碼


|   版權聲明:本文為博主原創文章,未經博主允許不得轉載。

 

  在計算機中所有的數據的保存均是用二進制來實現的,而二進制的表示則是一串的0,1組成。而在計算機的表達中有着機

器數和原碼,反碼,補碼和移碼等數據的編碼表示方法。其中這些編碼的方法稱為碼制。

 

(1)、機器數

    各種數據在計算機中的表示的形式稱為機器數,其特點是數的符號用0、1來表示。機器數並不能算作真正的數值。

 

(2)、真值

  機器數對於的實際數值稱為該數的真值。也就是帶符號的機器數(機器數是不帶符號位的);機器數又分為無符號

數和有符號數兩種。無符號數表示正數,在機器數中沒有符號位。對於帶符號數,機器數的最高位是表示正負兩種符號

的,其中1表式負數,0表示正數。

1 真值和機器數的區別:(以3為例,總位數為8)
2 機器數:  00000011   表示機器數3,但是不知道是+3還是-3
3 真值:    00000011   表示+3
4          10000011   表示-3

 

(3)、原碼

  原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其余位表示值. 比如如果是8位二進制,如下:

1 1的原碼:
2 
4 [+1]原 = 00000001
5 
7 [-1]原 = 10000001

 

(4)、反碼

  反碼有兩種情況:

      》、當原碼為正數時,其反碼就等於正數的原碼(+原碼 = +反碼)

           》、當原碼為負數時,其反碼就等於正數的原碼按位取反,但是最高位的符號位不變

1 1的反碼:
2 
3 [+1]反 = [+1]原 = 00000001
4 
5 [-1]反 = 11111110

  如果一個反碼表示的是負數, 要將其轉換成原碼再計算它真正的數值,否則是不知道它表示是什么數值

 

(5)、補碼

  補碼有兩種情況:

              》:當原碼為正數時,其補碼也等於正數的原碼(+原 = +反 = +補)

              》:當原碼為負數時,其補碼等於正數的原碼按位取反,符號位不變,最后在在末尾加1(及在反碼的末尾加1)

1 [+1]原 = 00000001 =  00000001  =  00000001 
2 
3 [-1]原  = 10000001 =  11111110  =  11111111

  負數的補碼和反碼一樣,需要轉換為原碼才能分辨其數值

 

(6)、 移碼(又叫增碼)是符號位取反的補碼:

 1 [+1]移 = 10000001 [-1]移 = 01111111 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM