计算机里都是以补码的形式存储数据,电脑只能识别二进制的0和1,
一个字节(8位)为例
原码 :最高位符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制。
反码:正数的反码与原码一致,负数的反码是对原码按位取反,只是最高位(符号位)不变。
补码:正数的补码与原码一致,负数的补码是该数的反码加1。
原码的最高位称为符号位(为0->正,1->负)(记忆方法:符号‘0’转90度还是0,符号‘1’转90度就是-负号)
正数的原码=正数的反码=正数的补码
负数的反码=它的原码符号位不变,其他位取反(0->1,1->0)
负数的补码=它的反码+1
可以说,反码是原码要转换成补码的一个 过渡阶段。
例如:
5 -5
原码: 00000101 10000101
反码: 00000101 11111010
补码: 00000101 11111011
现在让我们来看看计算机是如何进行运算的。
例如: 00000101
5+5 + 00000101
————————
= 00001010 2个数对应的补码相加得到的二进制为10
5+(-5)
00000101
+ 11111011 2个数对应的补码相加得到的二进制为-10
—————————
= 100001010
这个时候会发现进1到第9位了,我们研究的是1个字节8个位,只需要取
前面8个位就可以了,观察发现为00001010 为-10
打开电脑计算器点击程序员
1个字节最多能存储的数字是127