gpt4 book ai didi

c - 在小端机器上,位运算符如何工作?

转载 作者:太空宇宙 更新时间:2023-11-04 00:14:21 24 4
gpt4 key购买 nike

我有以下从文件中获取像素值的代码。我在运行 OS X 的英特尔 macbook 上。我相信那是小端。我有以下代码,我用它来确定是否在像素上设置了最低有效位。它编译并运行,但我不确定操作是否真的给我正确的数据。

 typedef struct {
unsigned char blue;
unsigned char green;
unsigned char red;
} pixel_t;

pixel_t *pixels = malloc(((bmp->dib.bmp_bytesz/3)+1) * sizeof(*pixels));

printf("%u", (pixels[i].red & 0x01));
printf("%u", (pixels[i].green & 0x01));
printf("%u", (pixels[i].blue & 0x01));

最佳答案

Little-endian 和 big-endian 指的是较大单位(如 shortint)中的字节顺序(不是位本身)。

位运算相同;这些操作为您提供 pixels[i].blue 等中数字的最低有效位。如果它们存储在 char(或 unsigned charsigned char),则没有问题。如果它们存储在 intshort 或其他东西中,那么被寻址的字节将根据机器是 big-endian 还是 little-endian 而不同,但是它仍然是平台上数字的最低有效位。

关于c - 在小端机器上,位运算符如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17714794/

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