【发布时间】:2020-05-16 11:44:38
【问题描述】:
我写了一些我现在正在单元测试的代码,为此我在互联网的帮助下制作了下面的代码。
//shows changed bit
//0010 0101 XOR 0010 0111 = 0000 0010
uint8_t XOR = value ^ result;
int count;
//count amount of 1's in XOR
for (count = 0; XOR; XOR >>= 1)
{
count += XOR & 1;
}
Value 是原始值,result 是该值,但切换了 ONE 位。
我只是想确保我理解正确,但如果我错了,请纠正我。
for 循环中的第二条语句“XOR;”我认为它所做的是在 XOR 不为 0 时运行 for 循环。XOR >>= 1 是它设置为自身,但 1 向右移动了一位。
只要最后一个位置有 1,计数就会 +1 吗?
这就是我所做的。
【问题讨论】:
-
你是对的。它正在计算 XOR 中
1的位数。
标签: c bit-manipulation bit-shift