Gop*_*gop 2 byte bit-manipulation bit bitwise-operators
嘿,我有一个简单的问题:
如何在没有任何IF语句或任何其他类型的BOOLEAN表达式的O(1)中使用逐位运算符来确定int是2的幂(仅1个正位)?
该方法需要返回一个整数值.
该方法可以返回一个你可以决定的数字,这意味着它的幂为2,另一个数字意味着它不是2的幂.[说负数表示X,正数表示Y也是允许的]
另外,你不能依赖int有32位的事实.
这是我在接受采访时被问到的一个问题.
如果减法是可接受的,那么你可以使用x & (x - 1),其中0表示2的幂,否则> 0.如果它需要是一个纯粹的按位解决方案,那么你需要以- 1通常的方式为二进制补码算法实现With按位运算符.
| 归档时间: |
|
| 查看次数: |
3154 次 |
| 最近记录: |