带符号的8位二进制范围为什么是-(2的7次)至(2的7次-1)

来源:百度知道 编辑:UC知道 时间:2024/05/30 06:13:21
带符号的8位二进制范围为什么是-(2的7次)至(2的7次-1)
而不是-(2的7次-1)至(2的7次-1)
能否说得详细一点
是怎么用补码来出来的

因为机器中负数使用补码表示的
所以正负数表示是不对称得,你可以研究下机器码
最小:10000000 这里不是-0,而是-(2的7次)
最大:01111111 (2的7次-1)

这是由于负数采用补码表示
11111111 -1
11111110 -2
...........
10000001 -127
10000000 -128

因为10000000 + 1 = 10000001
所以10000000表示-128而不是-0 (方便计算,如果是-0还需要进行转换)

关于补码:
a.最高位是符号位:
b.正数就是原码
c.负数就是对应原码取反再加1,符号位不变

1-00000001
2-00000010
-1:
原码:
10000001
取反:(符号位不变)
11111110
加1:
11111111

-2:
原码:
10000010
取反:(符号位不变)
11111101
加1:
11111110

快算:
1)取绝对值原码
2)从右往左看保留第一个1及右边的0,将1之前的所有位取反
求-127补码:
1)01111111(127原码)
2)10000001

求-64补码:
1)01000000(64原码)
2)11000000
--------------------------------
最小:10000000  这里不是-0,而是-(2的7次)
最大:01111111  (2的7次-1)

这是由于负数采用补码表示
11111111 -1
11111110 -2
...........
10000001 -127
10000000