gpt4 book ai didi

c - 位操作(移位)

转载 作者:行者123 更新时间:2023-11-30 18:13:00 25 4
gpt4 key购买 nike

我正在查看一段代码:

int result = 0 ;
char byte = foo[j]
for (i = 7 ; i>0 ; i--) {
byte = (byte & ~0x1)>>1 ;
result+= array[i] * (byte & 1) ;
}

我知道这段代码的目的是乘以字节中相应位设置为 1 的数组元素。

我不明白为什么 ~0x1 是必要的,因为每次我只考虑最后一位

有什么想法吗?

最佳答案

某些编译器通过旋转位而不是移位来实现>>。这可以防止这种情况(如果最后一位设置为0,那么即使移位实现为旋转,答案也将保持正确)

关于c - 位操作(移位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28007682/

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