在 32 位计算机上执行下列 C 语言代码:
short si=-32767 unsigned int ui = si;
则 ui 的真值为()
A.2^15 - 1
B.2^15 + 1
C.2^32 - 2^15 - 1
D.2^32 - 2^15 + 1
在32位计算机上,`short`类...
用户登录可进行刷题及查看答案
在32位计算机上,`short`类型通常是16位有符号整数,范围为-32768到32767。当执行以下代码时:
short si = -32767; unsigned int ui = si;
1. **`short si = -32767`** `-32767`的16位二进制补码表示为: `1000 0000 0000 0001` 最高位(符号位)为1,表示负数。
2. **类型转换到`unsigned int`** 当有符号的`short`类型转换为无符号的`unsigned int`(32位)时,会进行**符号扩展**: 原16位补码被扩展为32位,保持数值不变。扩展后的二进制为: `1111 1111 1111 1111 1000 0000 0000 0001`
3. **计算无符号值** 该32位二进制数的无符号十进制值为: `2³² - 2¹⁵ + 1` 因为最高位的权重为`2³¹`,其余位的和为`2¹⁵ - 1`,总数值为: `2³² - (2¹⁵ - 1) = 2³² - 2¹⁵ + 1`
**答案:D. 2^32 - 2^15 + 1**
登录后提交答案
暂无评论,来抢沙发