几个星期以来,我一直在用一些书轻轻地学习 C。
int main(void)
{
float num = 3.15;
int *ptr = (int *)# //so I can use line 8 and 10
for (int i = 0; i < 32; i++)
{
if (!(i % 8) && (i / 8))
printf(" ");
printf("%d", *ptr >> (31 - i) & 1);
}
return 0;
}
output : 01000000 01001001 10011001 10011010
正如您3.15
在单精度float
中看到的那样01000000 01001001 10011001 10011010
。所以让我们说ptr
点地址0x1efb40
。
以下是问题:
正如我在书中所理解的那样,前 8 位
num
数据存储在 中0x1efb40
,第二个 8 位存储在 中0x1efb41
,接下来的 8 位存储在 中0x1efb42
,最后 8 位存储在 中0x1efb43
。我对吗?如果我是对的,有什么方法可以直接使用十六进制地址值访问第二个 8 位
0x1efb41
?因此我可以将数据更改为类似的东西11111111
吗?