关于原码、反码、补码、移码
机器数、真值、符号位
机器数是将符号数字化的数,是数字在计算机中的二进制表示形式。机器数有2个特点:一是符号数字化,二是其数的大小受机器字长的限制。机器字长
二进制每个0和1是组成二进制的最小单位,称作位(bit),常用的位数有8、16、32、64位,字长为8位的组合编码称为字节,是计算机的基本编码单位。字长反应了一台计算机的计算精度,其他条件相同的情况下,字长越长,计算机处理速度越快。所以就有分成8位、16位、32位、64位CPU,对应相应位数的字长,越高位数的cpu可以同时处理相应位数的二进制数据,所以位数越高的CPU处理速度也就越快。
机器字长就同字长一样,机器字长是指计算机进行一次整数运算所能处理的二进制数据的位数,所以这个也反映了计算机的精度和速度。
由于计算机内部硬件只支持两种物理状态,一般是0和1,实用数据的+和-,我们用1表示-,0表示+,通常这个符号放在二进制数据的最高位,也称为符号位。例如一串二进制数表示为101001,机器数是带符号的,那么他的机器数就是101001,他的真值就是:第一位符号位转换1转换成-,后面的01001就是真值,转换为十进制就是-41。
原码
原码=(符号位+真值)的绝对值
例如这两串二进制10000001和00000001,原码就是[-1]和[+1],最高位是符号位,他们各自转换成十进制就是+1和-1。
反码
反码分成两种:正数的反码和负数的反码
正数的反码就是它本身;负数的反码就是符号位不变,将0和1反过来例如原码[-65],二进制11000001的反码就是[-62],二进制10111110
补码
和反码类似,正数的补码就是自身,负数的补码就是在进行反码操作后+1,例如原码[-33],二进制11000011的补码就是[-61],二进制10111101
移码
不论真负数,移码就是在原码的基础上将符号位取反。