原码、反码、补码、个人理解
源代码:
二进制点表示法,即最高位表示符号位,"0"表示正数,"1"表示负数,剩下位表示数值的大小
正数的最高位是0
负数的最高位是1
示例:
符号位数值位
70 0000111
-7 1 0000111
反码:
正数反码与原始代码相同,没有任何变化
负数的反符号:与原始符号的符号位相同,其他值相反,即0变为1,1变为0
示例:
符号位数值位
70 0000111
-7 1 1111000
完成代码:
正补数与原始代码相同,没有任何变化
负数的补数是负号加1
示例:
符号位数值位
70 0000111
-7 1 1111001
总结:
一个字节的范围为什么是-128~127
一个字节是8位,即00000000(8位)
因为计算机为了区分正数和负数,取了一个符号位来表示正负,所以最大的数只能表示1111111(7位)。
如果将二进制1111111转换为十进制,则为127。
请告诉我。 我的理解正确吗?
一楼的ithzc建议看CS APP。 其中写道:“从二进制转换为补数有函数。 这个函数的关键是权重。 字节的最高权重为-2^7,最高2位权重为2^6,最高3位权重为2^5……同样,在最低权重达到2^0之前,可以看到最高权重为负号。 其他国内的教材都是你说的那种解释,CSAPP解释了代码的区别,每个代码对应一个函数。