几个星期以来,我一直在用一些书轻轻地学习 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吗?