计算机里都是以补码的形式存储数据,电脑只能识别二进制的0和1,
0 表示正 1表示负 一个数的最高位定义为符合号位
一个字节(8位)为例
原码 :最高位符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制。[X]原
[+1]原= 00000001 [+127]原=0111111
[ -1 ]原 =10000001 [ -127]原=11111111
[+0]原 = 00000000
[-0]原 = 10000000
反码:正数的反码与原码一致,负数的反码是对原码按位取反,只是最高位(符号位)不变。
[+1]反 = 00000001 [+127]反=01111111
[-1]反 = 11111110 [-127]反 =1000000
补码:正数的补码与原码一致,负数的补码是该数的 加1。
[+1]补=00000001 [+127]补=01111111
[-1]补=11111111 [-127]补=10000001
原码的最高位称为符号位(为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