原码、反码、补码
注意,我们这里举列的原码和反码只是为了求负数的补码,在计算机中没有原码,反码的存在,只有补码。 一.原码 正数的原码就是它的本身 假设使用一个字节存储整数,整数10的原码是:0000 1010 负数用最高位是1表示负数 假设使用一个字节存储整数,整数-10的原码是:1000 1010 二.反码 正数的反码跟原码一样 假设使用一个字节存储整数,整数10的反码是:0000 1010 负数的反码是负数的原码按位取反(0变1,1变0),符号位不变 假设使用一个字节存储整数,整数-10的反码是:1111 0101 三.补码(再次强调,整数的补码才是在计算机中的存储形式。) 正数的补码和原码一样 假设使用一个字节存储整数,整数10的补码是:0000 1010(第三次强调:这一串是10这个整数在计算机中存储形式) 负数的补码是负数的反码加1 假设使用一个字节存储整数,整数-10的补码是:1111 0110(第三次强调:这一串是-10这个整数在计算机中存储形式) 四.在计算机中,为什么不用原码和反码,而是用补码呢? 因为在使用原码,反码在计算时不准确,使用补码计算时才准确。 使用原码计算10-10 0000 1010 (10的原码) +1000 1010 (-10的原码) 1001 0100 (结果为:-20,很显然按照原码计算答案是否定的。) 使用反码计算10-10 0000 1010