mis*_*tor 2 language-agnostic bit-manipulation bitwise-operators
我想要一行代码来检查给定的整数是否为2 i - 2 j或NOT.(使用按位运算符)
正如AndreyT所说,答案可以在Hacker's Delight中找到:
使用以下公式关闭最右边的1位连续字符串(例如,01011000⇒01000000):
Run Code Online (Sandbox Code Playgroud)((x | (x – 1)) + 1) & x这可以用于以查看是否为非负整数的形式2的Ĵ - 2 ķ一些Ĵ ≥ ķ ≥0; 应用公式,然后对结果进行0检验.
(正在讨论是否发布这个,因为它是一个家庭作业问题,但正如AndreyT已经提到它并且它很容易Googlable,我认为直接引用更有帮助;我会让提问者处理接受帮助的伦理含义家庭作业,我希望如果他的答案取决于此,他会写下自己如何运作的解释)