【问题标题】:How to find out if first x bits are set in a binary representation of an integer effectively?如何有效地确定前 x 位是否设置为整数的二进制表示?
【发布时间】:2016-05-26 03:54:08
【问题描述】:

在最近的一次采访中,有人问我这个问题。我通过运行一个循环并通过每次右移 1 来检查每个 x 位来给出解决方案。

然后他问我是否可以在不运行循环的情况下做到这一点。我尝试了各种方法,但找不到解决方案。哪位高手能帮帮我吗?

示例 - 如果 num = 15 且 x = 2 那么结果应该为真,因为第一个 2 位设置在 15(01111) 中。

谢谢

【问题讨论】:

    标签: math bit-manipulation


    【解决方案1】:

    我认为以下(Java 实现)应该可以工作:

     /** Returns true if the least significant x bits in n are set */
     public static boolean areLSBSet(int n, int x) {
        // validate x, n
        int y = (1<<x) - 1;
        return (n & y) == y;
    }
    

    我们的想法是快速找出2^x - 1 的数字(这个数字已经设置了所有x 最低有效位),然后取给定数字n 的按位和,这将给出相同的数字仅当设置了 n 中的那么多位时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-09
      • 2021-10-01
      • 2018-03-17
      • 1970-01-01
      • 2010-10-25
      • 2011-01-11
      • 2013-10-22
      • 2021-10-26
      相关资源
      最近更新 更多