常见题型:C语言中的有符号数和无符号数的表示。
【例】有如下C语言程序段: short si=-32767;unsigned short usi=si;执行上述两条语句后,usi的值为___。short和unsigned short均使用16位二进制数表示。
【分析】考点:同一个二进制数,被视为无符号数和有符号数的补码时,其真值是多少?
以八位二进制数的表示为例,考虑无符号和有符号数的补码的真值:
无符号数X1 | 有符号数的补码X2 | |
---|---|---|
0000 0000 | 0 | 0 |
...... | ...... | ...... |
0111 1111 | 127 | +127 |
1000 0000 | 128 | -128 |
...... | ...... | ...... |
1111 1111 | 255 | -1 |
通过观察可以看到,从1000 0000开始,同一个八位二进制数, X1+|X2|始终等于256,也就是。所以,答案应该为
。