gpt4 book ai didi

c - c中按位运算的解释

转载 作者:行者123 更新时间:2023-11-30 20:14:23 24 4
gpt4 key购买 nike

所以我一直在研究这个评论问题,但无法遵循所提供的答案。我了解他们正在执行的反转十六进制数字的操作,但是我不知道他们用来获取下一个大于它的奇数的方法。

我感到困惑的行:

 unsigned char ones = !0; 
...
ones = ones <<2 <<2;
ones |= !0;
results |= ones;

什么是 !0?这不就是0吗?你如何将其转移/与其他部分联系起来?

谢谢

enter image description here

最佳答案

根据 C 标准(6.5.3.3 一元算术运算符)

5 The result of the logical negation operator ! is 0 if the value of its operand compares unequal to 0, 1 if the value of its operand compares equal to 0. The result has type int. The expression !E is equivalent to (0==E).

因此 !0 产生 1。

假设函数的参数是0x3C

声明后

unsigned char ones = !0;

ones 将等于 0x01

声明后

unsigned char result = val << 2 << 2;

结果将等于0xC0

声明后

unsigned cgar temp = val >> 2 >> 2;

temp 将等于 0x03

声明后

result += temp;

ewsult 将等于 0xC3

result具有val的相反值,而val又具有0x3C

其余语句将每个十六进制数字的最低位设置为 1 例如

ones = ones << 2 << 2;

产量0x10

所以你会得到结果等于0xD3(3的最低位已经等于1,C将转换为D)。

关于c - c中按位运算的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26478711/

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