始终没有看明白计算机有符号整数数的表示问题,谁能说明白清楚一点,百度那些东西没有
摘抄一个程序: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
这样对吗 ?? 就是这样的 实际程序先跑一下是多少啊?
页:
[1]