原码、反码、补码解析

先明确原码、反码、补码的定义

原码:一种二进制表示方法,例如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个特点:一是符号数字化,二是其数的大小受机器字长的限制。

无符号数:仅有数值位。

你可能感兴趣的:(笔记,其他)