#include <stdio.h>
int main()
{
char d;
for (d = 0; d + 1 > 0; d++)
{
;
}
printf("d is %d\n",d);
return 0;
}
输出结果:
d is -128
为什么以下代码的输出结果是-128,而不是127?
-128+1 < 0不满足条件则跳出,所以输出-128
为什么8位二进制数表示的范围是-128到127(有符号型数据),我不懂为什 ...
-128是10000000,八位二进制数一共有256种码,1到127,政府数只差一个最高位,0是00000000(即正0),负0,即10000000被定义为-128.
1字节的表示范围为-128到127,为什么不是-128到128
-1-127的结果应该是-128,在用补码运算的结果中, [1000 0000]补 就是-128。但是注意因为实际上是使用以前的-0的补码来表示-128, 所以-128并没有原码和反码表示。(对-128的补码表示[1000 0000]补算出来的原码是[0000 0000]原, 这是不正确的)使用补码, 不仅仅修复了0的符号以及存在两个编码...
为什么-128无法被原码或反码表示?
在八位二进制下,因为有一位是符号位,原码和反码只能表示0到127,-0到-127,所以-128不能用原码或反码表示。按这种说法,128因为无法用八位二进制下的原码表示,则-128的八位二进制下的补码也是不存在的。但是,为了在数的表示上消除编码映射的不唯一性,所以通过人为的定义对转换的10000000强制认定...
java的一个程序如下,输出结果为什么为—127呢?为什么是负数呢?怎么算出...
byte范围 -128~127之间。当数字为127的时候,不溢出,相当于最大的127。128的时候,溢出,相当于最小的负数,也就是-128。所以,129就是-127
java中byte的范围为何是-128---127而不是-127---127? 1111 1111 这个应...
我们都知道byte占8位。而2的8次方等于256,也就是byte最多可以表示256个不同的数,0~127:128个 -0~127:128个 但是这里0与-0表示一样的数了,所以就用-0的二进制补码表示到-128里面去了
为什么8位的二进制补码范围是-128-127,而不是-127-127呀?为什么差一...
虽然“-0”也是“0”,但根据正、反、补码体系,“-0”的补码和“+0”是不同的,这样就出现两个补码代表一个数值的情况。为了将补码与数字一一对应,所以人为规定“0”一律用“+0”代表。同时为了充分利用资源,就将原来本应该表示“-0”的补码规定为代表-128。
为什么8位有符号类型的数值范围是-128~127
而对应的补码只有一种表示方式,-128在原码和反码中无法表示,在补码中却可以表示(用-127的补码 1000 0001 减1得到 1000 0000 )。而计算机中数值以补码形式存储和运算,当然-128可以表示出来,因此8位有符号数值的范围是-128~127,同理其他位数(16、32、64)也可以以此类推。
为什么8位的二进制补码范围是-128~127,而不是-127--127呀??为什么差一...
于是就引入了补码概念. 负数的补码就是对反码加一,而正数不变,正数的原码反码补码是一样的.在补码中用(-128)代替了(-0),所以补码的表示范围为:(-128~0~127)共256个.注意:(-128)没有相对应的原码和反码, (-128) = (10000000)参考资料:http:\/\/zhidao.baidu.com\/question\/4319911.html ...
8个二进制位补码表示带符号正数取值范围为什么是[-128,127]呢?
可见下表:-128 没有原码和反码!那么,怎么求其“补码”?千万不要用“取反加一”,就是个坑!必须用补码的定义式来求: [ X ]补 = 模 + 该负数X 即:[-128]补 = 256-128 = 128 = 1000 0000。