原码、反码、补码解析
先明确原码、反码、补码的定义:
原码:一种二进制表示方法,例如100110010,第一位是符号位,用来表示后面位数的正负;
反码:若机器数是正数,反码=原码;若机器数是负数,反码为原码除符号位以外按位取反;
补码:若机器数是正数,补码=原码;若机器数是负数,反码为原码除符号位以外按位取反并加1。
再来说原码、补码、反码的产生原因和作用:
原码的缺点:
①:正负相加不等于0。例如1为0001,-1为1001,相加等于1010,即为-2;
②:0000和1000,即+0和-0。
所以产生了反码,可以解决①问题,此时1位0001,-1位1110,相加等于1111,即为-0(使用反码后,可使该数与原码完美契合,形成0111或1111)。由此可见,问题②没有解决,依然有+0、-0存在。
所以产生了补码,用来解决②问题,即若机器数为负数,在原基础加1,所以1111再加1为10000,由于进位产生的符号位会被舍掉,因此最后的结果为0。
因此,计算机中的整型(int,short,long)用补码表示。
注意:对于无符号数,原码=补码=反码。
附:机器数、无符号数
机器数:机器数是将符号数字化的数,是数字在计算机中的二进制表示形式。机器数有2个特点:一是符号数字化,二是其数的大小受机器字长的限制。
无符号数:仅有数值位。

浙公网安备 33010602011771号