Q:
考虑一下C语言代码:
short si=-8196;
unsigned short usi=si;
执行上述程序段后,usi的值为:
A:57340
分析:
-8196= -(8192+4)
8192=213
所以8196的二进制为
10 0000 0000 0100
根据负数补码=取反+1,得到-8196的二进制为
1101 1111 1111 1100
也就是说si 和usi目前所存的二进制都是-8196的二进制
那么对于无符号数的usi来说,真值就是
1101 1111 1111 1100=65535-213-22-20=57340