基本上试图找到汉明字符串
https://en.wikipedia.org/wiki/Hamming_distance 。
我想知道这个表达的意思和作用val &= val - 1;
我知道val+=10-->val=val+10
最佳答案
val
初始化为
val = x ^ y;
即val
是 x 和 y 的按位异或,这意味着它包含 1
在 x
的所有位中和y
不同和 0
在 x
的所有位中和y
是一样的。
现在,循环的每次迭代都会执行
val &= val - 1;
这相当于
val = val & (val - 1);
每个这样的按位与运算都会变成一个1
一点val
至0
.
例如,假设 val
的二进制表示形式是:
1010
val - 1
的二进制表示是:
1001
执行按位与后,我们得到:
1000
因此,在循环结束时,dist
包含数量1
val
的原始值中的位,这是x
的位数和y
不同。
关于c - 这个表达式是什么意思 "val&=val-1",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48437660/