Goodbye 发表于 2011-10-4 11:50:01

始终没有看明白计算机有符号整数数的表示问题,谁能说明白清楚一点,百度那些东西没有

摘抄一个程序:

int main()
{
char a;
int i;
for(i=0; i<1000; i++)
{
a = -1-i;
}
printf("%d",strlen(a));
return 0;
}

显然有
__________________________________________________________
数组值          |    内存储存形式(补码)|反码
_________________|________________________|_______________
a=-1             1111 1111         
a=-2             1111 1101
. .
. .
. .
a= -127            1000 0001
a= -128            1000 0000
________________________________________
________________________________________

那么接下来呢?
_______________________________________
________________________________________
数组值          |    内存储存形式(补码)
_________________|______________________
a=-129            1 0111 1111   因为溢出所以得到 0111 1111 = 0x7f = 127
a=-130            1 0111 1110   溢出取低八位   0111 1110 = 0xfe = 126问题在这里产生:
那么其实
a = 127
a = 126
这样对吗 ??

Goodbye 发表于 2011-10-11 12:29:48

就是这样的

leaflet05 发表于 2011-10-12 21:50:19

实际程序先跑一下是多少啊?
页: [1]
查看完整版本: 始终没有看明白计算机有符号整数数的表示问题,谁能说明白清楚一点,百度那些东西没有