关于计算机组成原理的补码数值范围,书上说一个n+1位整数补码能表示的最大数是011...1,即2^
符号位为1,就是负数,负数的补码为2^n-源码;
非符号位取反加1后,代表的数是2^(n+1),即整个数是-2^(n+1),而100……0代表-2^(n+1)+1。
1个字节即8位二进制数,用机器数表示的有符号整数范围:
原码范围:1111 1111b~0111 1111b
对应真值范围:-111 1111b~+111 1111b, 即 -127d~ +127d
反码范围:1000 0000b~0111 1111b
对应真值范围:-111 1111b~+111 1111b, 即 -127d~ +127d
补码范围:1000 0000b~0111 1111b
对应的真值范围:-1000 0000b~+111 1111b, 即 -128d~ +127d
扩展资料:
正数
正整数的补码是其二进制表示,与原码相同。
例:+9的补码是00001001。(备注:这个+9的补码是用8位2进制来表示的,补码表示方式很多,还有16位二进制补码表示形式,以及32位二进制补码表示形式,64位进制补码表示形式等。每一种补码表示形式都只能表示有限的数字。)
负数
求负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。
同一个数字在不同的补码表示形式中是不同的。比如-15的补码,在8位二进制中是11110001,然而在16位二进制补码表示中,就是1111111111110001。以下都使用8位2进制来表示。
参考资料来源:百度百科-补码
最大数是 011...1,即2^n-1(二的n次方减一),
最小的是 100...0,即-2^n(负二的n次方):-2^n ≤ x ≤ 2^n-1。
我的疑问是:为什么 100...0 等于-2^n,
100...0 正好等于2^n,不是说符号位不算为数值吗?
如果符号位不算,那 100...0 就应该等于 0 吧。
-------------------------
补码中的符号位,那就是瞎扯。
符号位,是在原码中定义的。
经过“取反加一”到了补码,就已经不是符号位的意义了。
补码的全部位,都是数据,都要参加运算。
所谓的“符号位也参加运算”,就是个假话。
你用原码,带着符号位算一算,就会出现错误的结果。
其原因,就是“符号位,不能参加运算”。
最大数是011...1,即2^n-1(二的n次方减一),
最小的是100...0,即-2^n(负二的n次方):-2^n ≤ x ≤ 2^n-1。
我的疑问是:为什么100...0等于-2^n,100...0正好等于2^n,不是说符号位不算为数值吗?
如果符号位不算,那100...0就应该等于0吧。
---------------------
所谓的符号位,是不存在的。
计算机教材说:首位叫做符号位,1 代表负号、0 代表正号,这是专家它们规定的。
其实,根本就不是这回事。
如果是人为规定,那么,就可以反过来规定。
你反过来试试!
根本就是不可能的,补码,完全就不能正常运算了。
所以,补码,并没有什么符号位,其全部位,都是数值位。