gpt4 book ai didi

c - 如何设置整数的 MSB 4 位而不考虑字节顺序?

转载 作者:行者123 更新时间:2023-11-30 18:55:03 26 4
gpt4 key购买 nike

修改后的问题 -

无论整数类型的大小如何,如何计算掩码位?当我不知道整数的大小时,我想计算前 4 位的掩码。

我有两个选项可以在代码中设置 MSB 4 位 -

如果是little_Endian -

然后——

  int t  = 54342;

int k = t<<4;
int t = (k>>4)|0XF000

其他大尾数 --然后——

 int t  = 54342;
int k = t>>4;
int t = (k<<4)|0X000F

我的问题是有没有更好的方法来做到这一点。如何使代码独立于字节顺序?我可以使用 union 来确定字节顺序。但是,我希望我的代码简单。我怎样才能这样做?

最佳答案

Endianess 用于解释字节在内存中的存储方式。如果您直接引用变量而不进行任何指针操作,它并不规定如何访问字节。

这意味着,无论平台的endianess如何,以下程序都会产生相同的结果。

int main(void)
{
int num = 0xDEADBEEF;
int mask = 0xF0000000;

printf("SET = %X\n", (unsigned int) (num | mask));
return 0;
}

关于c - 如何设置整数的 MSB 4 位而不考虑字节顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28740874/

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