gpt4 book ai didi

c - Little vs Big Endianess : How to interpret the test

转载 作者:太空狗 更新时间:2023-10-29 16:51:54 25 4
gpt4 key购买 nike

所以我正在编写一个程序来测试机器的字节序并打印它。我了解小端和大端之间的区别,但是,根据我在网上找到的内容,我不明白为什么这些测试显示机器的字节序。

这是我在网上找到的。 *(char *)&x 是什么意思,它等于 1 如何证明机器是 Little-Endian?

int x = 1;
if (*(char *)&x == 1) {
printf("Little-Endian\n");
} else {
printf("Big-Endian\n");
}

最佳答案

如果我们分成不同的部分:

  1. &x:获取变量x所在位置的地址,即&x是指向的指针>x。类型是int *

  2. (char *)&x:获取 x 的地址(int *)并将其转换为一个 char *

  3. *(char *)&x:这将取消引用 &x 指向的 char *,即获取存储在x.

现在,如果我们回到 x 以及数据的存储方式。在大多数机器上,x 是四个字节。在 x 中存储 1 会将最低有效位设置为 1,将其余位设置为 0。在小端机器上,它在内存中存储为 0x01 0x00 0x00 0x00,而在大端机器上,它存储为 0x00 0x00 0x00 0x01

表达式的作用是获取这些字节中的第一个字节并检查它是否为 1

关于c - Little vs Big Endianess : How to interpret the test,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9971369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com