I a*_*m L 0 python if-statement set data-structures python-3.x
我正在尝试打印数组的所有子集。if我在其中一个解决方案中发现了这一说法。
这个if条件有什么作用呢?
if((counter & (1 << j)) > 0):
Run Code Online (Sandbox Code Playgroud)
您的陈述:
if ( (counter & (1 << j)) > 0 ):
Run Code Online (Sandbox Code Playgroud)
这是一些按位运算。让我们来分解一下:
(1 << j)生成数字0b1并将其左移若干j位 -j必须是整数。这类似于2**j, 或 2 的 3j次方,但使用位移运算符<<可以清楚地表明我们正在执行按位运算。counter & (1 << j)获取最后一个操作的结果,并对and变量进行按位运算counter。这似乎j是位掩码的说明符 - 它告诉签入哪个位很重要counter。由于无论(1 << j)生成什么1,其二进制表示形式都只有 1,counter & (1 << j)因此该表达式将始终生成 2 的幂或 0。> 0检查生成的数字是否为 0。总而言之,这是一种相当复杂的方法来检查j从右边开始的第 th 位counter是否等于1或0。如果没有看到代码的其余部分,就不可能知道该行在上下文中的作用,但希望这能为您提供足够的提示,让您了解您想要弄清楚的任何内容。
| 归档时间: |
|
| 查看次数: |
2425 次 |
| 最近记录: |