影影影影影少丶 发表于 2021-5-4 12:35:51

带你学C带你飞课后作业s1e21第四题

本帖最后由 影影影影影少丶 于 2021-5-4 13:17 编辑

4. 在内存中捕获到一组 32 位数据如下:
0110 0111 0110 11000110 1111 0110 0010
请问它的值可能是(多选,可借助计算工具):
A. 1 个 32 位整数:1735159650
B. 2 个 16 位整数:26476 和 28514
C. 4 个字符:glob
D. 浮点数:1.116533 * 10^24

正确答案是A、B、C、D。
大佬们,请问为什么B选项也正确呢?我知道0110 0111 0110 1100转化为十进制是26476、0110 1111 0110 0010转化为十进制是28514
但是整型在内存中不应该是占据连续的4个字节吗?
如果分成两个数,不应该是xxxx xxxx xxxx xxxx 0110 0111 0110 1100和0110 1111 0110 0010 xxxx xxxx xxxx xxxx 这样才对吗?
前一个如果未知x全为0还能说是26476,但是后一个就算未知的x全为0也不可能是28514了呀?

影影影影影少丶 发表于 2021-5-4 13:00:13

额。打扰大家了,是我脑子不清醒。题干指明了16位。没问题了

人造人 发表于 2021-5-4 13:02:28

请问为什么B选项也正确呢?我知道0110 0111 0110 1100转化为十进制是26476、0110 1111 0110 0010转化为十进制是28514
但是整型在内存中不应该是占据连续的4个字节吗?

1. 你说的整型指的是int吗?
标准没有规定int是4个字节,不过大部分编译器在32位操作系统下是4个字节
如果int是4个字节,估计short是2个字节
如果是short类型的整数,不就是两个16位的了

影影影影影少丶 发表于 2021-5-4 13:03:53

人造人 发表于 2021-5-4 13:02
请问为什么B选项也正确呢?我知道0110 0111 0110 1100转化为十进制是26476、0110 1111 0110 0010转化为十进 ...

谢谢大佬解答^_^
页: [1]
查看完整版本: 带你学C带你飞课后作业s1e21第四题