在學習原碼, 反碼和補碼之前, 我認為有必要先講解一下機器數與真值的概念。
乙個數在計算機中的二進位制表示形式, 叫做這個數的機器數。機器數是帶符號的,在計算機用乙個數的最高位存放符號, 正數為0, 負數為1。
比如,十進位制中的數 +3 ,計算機字長為8位,轉換成二進位制就是00000011。如果是 -3 ,就是 10000011 。這裡的 00000011 和 10000011 就是機器數。
因為第一位是符號位,所以機器數的形式值就不等於真正的數值。例如上面的有符號數 10000011,其最高位1代表負,其真正數值是 -3 而不是形式值131(10000011轉換成十進位制等於131)。所以,為區別起見,將帶符號位的機器數對應的真正數值稱為機器數的真值。
例:0000 0001的真值 = +000 0001 = +1;
1000 0001的真值 = –000 0001 = –1
定義:原碼就是符號位加上真值的絕對值。即用第一位表示符號,其餘位表示值。例如8位的二進位制數:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
定義:正數的反碼即為本身,負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反。例如:
[+1] = [00000001]原 = [01111110]反
[-1] = [10000001]原 = [11111110]反
定義:正數的補碼就是其本身,負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 最後+1。(即在反碼的基礎上+1) 例如:
[+1] = [00000001]原 = [00000001]反 = [00000001]補
[-1] = [10000001]原 = [11111110]反 = [11111111]補
1.正數的反碼和補碼都與原碼相同。
2.負數的反碼為對該數的原碼除符號位外各位取反。
3.負數的補碼為對該數的原碼除符號位外各位取反,然後在加1。
1.正數的反碼和補碼都與原碼相同。
2.負數的反碼為對該數的原碼除符號位外各位取反。
3.負數的補碼為對該數的原碼除符號位外各位取反,然後在加1。
二進位制原碼 反碼 補碼詳解
原碼 原碼是指將最高位作為符號位 0表示正,1表示負 其它數字位代表數值本身的絕對值的數字表示方式。例如 數字6 在計算機中原碼表示為 0 000 0110 其中,第乙個數字0是符號位,0表示正數,0 000110是數字6的二進位制資料表示。數字 6 在計算機中原碼表示為 1 000 0110 以上...
二進位制 真值 原碼 反碼 補碼
機器數 乙個數在計算機中二進位制的表示形式叫機器數,機器數是帶符號的 計算機使用最高位來表示符號位 負數為1 正數為0.假如計算機的字長為8位 那麼對於十進位制3的機器數表示為0000 0011 而對於 3的機器數表示為1000 0011。真值 由於機器數是帶符號的所以機器數的形式值就不等於實際的值...
java 二進位制原碼,反碼,補碼
強制型別轉換,用到原反補碼 就是二進位制定點表示法,即最高位為符號位,0 表示正,1 表示負,其餘位表示數值的大小。通過乙個位元組,也就是8個二進位制位表示 7和 7 0 符號位 0000111 1 符號位 0000111 正數的反碼與其原碼相同 負數的反碼是對其原碼逐位取反,但符號位除外。正數的補...