如何在给定的数字集中找到位置的最主要位?

时间:2018-03-04 00:59:09

标签: binary bit-manipulation bitwise-operators bit

示例:

11:  01011  
18:  10010  
 2:  00010    

Ans: 00010

在零位(最右边),我的0比1更多。因此,我的答案应为0.同样,在第一位,我有1作为显性位,依此类推。

有没有办法使用基本的按位运算符找到它,还是应该使用任何其他可以实现此结果的位掩码?我正在寻找一个O(1)解决方案。

1 个答案:

答案 0 :(得分:1)

如果您有三个输入x,y,z,则可以使用

 (x & y) | (z & (x | y))

对于任何其他恒定数量的输入,可能会找到类似的公式。