常見題型: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,也就是。所以,答案應該為
。