1、
函数foo的原型如下,则foo(0xAABB4455)返回结果( D )
unsigned int foo(unsigned int _in)
{
unsigned char ret = 0, uc = -1;
return _in>>24 ^ uc;
}
A.0xAA
B.0xBB
C.0x44
D.0x55
解题思路:
在32位系统中,unisigned int占4个字节
_in = 0x AA BB 44 55 (十六进制每8位一组)
| 字节序 | 内容 | 说明 |
|---|---|---|
| 第 3 字节 | 0xAA | 最高字节(bit 31–24) |
| 第 2 字节 | 0xBB | 次高字节(bit 23–16) |
| 第 1 字节 | 0x44 | 次低字节(bit 15–8) |
| 第 0 字节 | 0x55 | 最低字节(bit 7–0) |
_in >> 24 就是右移24位(即移动3个字节) = 0x00 00 00 AA = 0xAA
uc = -1转换成32位用补码来表达就是 0xFF FF FF FF
unsigned char uc = 0xFF
0xAA ^ 0xFF -> 1010 1010 ^ 1111 1111 = 0101 0101 (0x55)
2032

被折叠的 条评论
为什么被折叠?



