本文讨论了原码,反码与补码相关的基础知识:对于一个数, 计算机要使用一定的编码方式进行存储. 原码, 反码, 补码是机器存储一个具体数字的编码方式.

机器数:一个数在计算机中的二进制表示形式,  叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

例:十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。

真值:将带符号位的机器数对应的真正数值称为机器数的真值。

例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1

原码:原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值.

例:8位二进制:取值范围 [1111 1111 , 0111 1111],(-127,127);

[+1]原 = 0000 0001
[-1]原 = 1000 0001

反码:正数的反码是其本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反;反码表示的是负数, 无法直观的看出来它的数值. 需要将其转换成原码再计算;

[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反

补码:正数的补码是其本身,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1),通常也需要转换成原码再手动计算其数值;

[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
[1000 0000] 表示-128

应用:

更加深入,请阅读参考博客,本博客不进行重复总结了; 

保持更新,转载请注明出处;更多内容请关注cnblogs.com/xuyaowen;

参考博客:

原码, 反码, 补码 详解 (比较好的文章讲解)

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄