原码
原码:十进制数据的二进制表现形式,最左边是符号位,0为正,1为负
例如:56的原码是00111000,第一个0是符号位,0111000是数据位
(8个数字是一个字节,最大是01111111,最小是111111111)
利用原码对正数进行计算是不会有问题的。
但是如果是负数计算,结果就出错,实际运算的结果,跟我们预期的结果是相反的。
例如:-0的原码是10000000,+1应该是1,但是结果是10000001
反码
反码:正数的补码反码是其本身,负数的反码是符号位保持不变,其余位取反
(反码本身为了解决原码不能计算负数的问题而出现的)
例如:-56原码是10111000,反码是11000111,-56+1就是在反码上+1,得到11001000就是-55的反码
负数做加法超过0会出现问题,跟实际有1的偏差,如-5+6,反码11111010+00000110=00000000,转成十进制结果为0,于是出现了补码
补码
补码:正数的补码是其本身,负数的补码是在其反码的基础上+1
补码还能多记录一个特殊的值-128,该数据在1个字节下,没有原码和反码。
计算机中的存储和计算都是以补码的形式进行的。