c代码:
#include <stdio.h>
int main()
{
int a = 10;
printf("hello world \n");
printf("a = %d\n",a);
printf("b1 = %d\n",0xff);
printf("b2 = %d\n",0xffff);
printf("b3 = %d\n",0xffffffff);
printf("b4 = %d\n",0xfffffff8);
return 0;
}
输出结果:
hello world
a = 10
b1 = 255
b2 = 65535
b3 = -1
b4 = -8
解释:
%d 输出有符号32位整数 b1 = 1111 1111,b2 = 1111 1111 1111 1111满足 要求 ,正常输出。
b3 = 1111 1111 1111 1111 1111 1111 1111 1111 超出范围 首位1作为符号位保留,符号为负 ,其余 31位按位取反 为000 0000 0000 0000 0000 0000 0000 0000,加一得000 0000 0000 0000 0000 0000 0000 0001,输出结果 -1.
b4 = 1111 1111 1111 1111 1111 1111 1111 1000 超出范围 首位1作为符号位保留,符号为负 ,其余 31位按位取反 为000 0000 0000 0000 0000 0000 0000 0111,加一得000 0000 0000 0000 0000 0000 0000 1000,输出结果 -8.