提前基础–机器数和真值
- 机器数
一个数在计算机的二进制表示形式,称作这个数的机器数。机器数带符号,在最高位存放符号,正数为 0,负数为 1。 - 真值
因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如符号数 10000011,其最高位 1 代表负数,其真正数值是 -3,而不是 131(10000011转换成十进制等于131)。所以,为了区别,将带有符号位的机器数对应的真正数值称为机器数的真值。
原码,反码,补码的基本概念和计算方法
原码
原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。例如一字节的8位二进制:[+1]=0000 0001,[-1]=1000 0001。因为第一位是符号位,所以 8 位二进制的取值范围是 [1111 1111,0111 1111],即 [-127,127]。
补码
补码的表示方法是:正数的补码是其本身,负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后加 1(即在反码的基础上加1)。
[+1]=[0000 0001]原=[0000 0001]反=[0000 0001]补
[-1]=[1000 0001]原=[1111 1110]反=[1111 1111]补
反码
反码的表示方法是:正数的反码是其本身,负数的反码是在其原码的基础上,符号位不变,其余各个位取反。
[+1]=[0000 0001]原=[0000 0001]反
[-1]=[1000 0001]原=[1111 1110]反
为何要使用原码,反码和补码(待补充)
对于正数因为三种编码方式的结果都相同,所以不再讨论,而对于负数:
[-1]=[1000 0001]原=[1111 1110]反=[1111 1111]补