| 版權聲明:本文為博主原創文章,未經博主允許不得轉載。
在計算機中所有的數據的保存均是用二進制來實現的,而二進制的表示則是一串的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