基本上试图找到汉明字符串
https://en.wikipedia.org/wiki/Hamming_distance。
我想知道这个表达是什么意思,做__construct
我知道public function __construct(RepositoryInterface $repo = null)
答案 0 :(得分:5)
val
已初始化为
val = x ^ y;
即。 val
是x和y的逐位XOR,这意味着它在1
和x
不同且y
不同的所有位中包含0
x
和y
相同的位。
现在,循环的每次迭代都会执行
val &= val - 1;
相当于
val = val & (val - 1);
每个这样的按位AND运算将1
的{{1}}位转换为val
。
例如,假设0
的二进制表示形式为:
val
1010
的二进制表示形式为:
val - 1
在执行按位AND后,我们得到:
1001
因此,在循环结束时,1000
包含原始值dist
中的1
位数,这是val
的位数。 }和x
不同。
答案 1 :(得分:3)
void findVideos(File dir, ArrayList<String> list){
for (File file : dir.listFiles()) {
if (file.isDirectory())
findVideos(file, list);
else if(file.getAbsolutePath().contains(".mp4"))
list.add(file.getAbsolutePath());
}
}
以下内容:
将val &= val - 1
和val
之间的按位AND运算结果分配给val - 1
答案 2 :(得分:1)
我认为,要求的确切意图。
val &= val - 1;
这将删除最右侧,最不重要的位:
val: xxxx1000..000
val - 1: xxxx0111..111
val & (val-1): xxxx0000..000
它通常用于计算(破坏性地)位数。
同样的诀窍:要获得最低位,请使用Integer.lowestOneBit(val):
int lowestOneBit = val & -val;
要理解后者:-n == ~n + 1
。那就是:java中的负数是二进制补码:每一位的一补(~n)加一。
答案 3 :(得分:0)
它相当于跟随一个,其中&amp;是一个按位AND。
val
答案 4 :(得分:0)
y
是按位AND赋值运算符,它基本上适用于复合运算符(+ =, - =等)在大多数编程语言中的工作方式。
&=
与val &= val - 1;
一个简单的&#39;&amp;&#39;在 val 和 val - 1 之间进行比较,结果变为val = val & (val - 1);
的值。
检查this link以了解有关C中更多运算符的知识以及如何使用它们。 快乐编码!