Piy*_*oni 3 c c++ bit-manipulation bitwise-operators
我试图理解一些代码,其中我找到了声明:
n=n&(n-1);
Run Code Online (Sandbox Code Playgroud)
这是做什么的?
该等式将最低有效非零位清零n.
如果我们假设8位,那么这是包络解释的背面.让我们n70岁.
n = 01000110
n-1 = 01000101
--------
n&(n-1) = 01000100
Run Code Online (Sandbox Code Playgroud)
因此,如果结果为0,则意味着最初只设置了一个位n,这意味着它的功率为2(或者为0).
如果在循环中迭代地应用直到n变为0,则迭代次数计算n最初设置的位数.但是,大多数处理器都有内置操作来为您执行此操作.
如果对你有兴趣,那么在这个网站上搜索"bithacks"会产生很多点击.