当前位置: 首页 > 面试题库 >

按位最高有效置位

蒙才
2023-03-14
问题内容

我想找到设置为的最高有效位1。我已经从尝试一切可能的方式&来进行或运算所有的位从131和它不工作。

就像1000000我想拥有一样7


问题答案:

如果您坚持直接使用按位运算符,则可以尝试如下操作:

private int mostSignificantBit(int myInt){
  int mask = 1 << 31;
  for(int bitIndex = 31; bitIndex >= 0; bitIndex--){
    if((myInt & mask) != 0){
      return bitIndex;
    }
    mask >>>= 1;
  }
  return -1;
}

我们将掩码初始化为,1 << 31因为它表示1后跟31
0。我们使用该值来测试索引31(第32个点)是否为1。当and将此值与一起使用时myInt,除非在中设置了相应的位,否则将得到0
myInt。如果是这种情况,我们返回bitIndex。如果不是,则将掩码向右移动1并重试。重复执行,直到用完所有要移位的位置为止,在这种情况下,这意味着未设置任何位(也许您想在此处抛出异常而不是返回-1)。

请注意,这将返回0for 16for
的值641000000以二进制形式)。您可以根据需要进行调整。还请注意,我使用的是无符号右运算符,而不是有符号右移。这是因为此处的目的是处理原始位而不是其有符号的解释,但是在这种情况下并不重要,因为所有负值都将在移位发生之前在循环的第一次迭代中终止。



 类似资料:
  • 问题内容: 我正在编写一个脚本,其中将业务量以纬度和经度加载到mySQL数据库中。然后,我向该脚本提供一个(最终用户的)经度纬度,并且该脚本必须计算从提供的经度/经度到它从数据库中获得的条目的EACH的距离,并按从最远到最远的顺序对其进行排序。 实际上,我实际上只需要大约10或20个“最近”的结果,但是除了从数据库中获取所有结果并对每个结果运行函数然后进行数组排序之外,我什么也想不做。 这是我已经

  • 问题内容: 如果我正在使用Long uuid = UUID.randomUUID().getMostSignificantBits()发生冲突可的可能性。它会切掉最低有效位,所以有可能发生冲突可,对吗? 问题答案: 根据文档,静态方法生成类型4 UUID。 这意味着六位用于某种类型信息,其余的122位是随机分配的。 分布了六个非随机位,其中UUID的最高有效一半分配了四个,而最低有效一半分配了两个

  • 我有2个使用的测试查询,但这两个查询都没有正确排序数据。执行以下语句后: 第一个查询 第二次查询 我正在从数据库中获取以下值: 第一个结果 第二个结果 我想要这样的东西 我的数据

  • 问题内容: 我有一些容器,他们的孩子只是绝对的/相对的。如何设置容器的高度,以便他们的孩子进入其中? 这是代码: HTML CSS 这是一个jsfiddle。我希望“栏”文本出现在4个正方形之间,而不是在它们后面。 有简单的解决方法吗? 请注意,我不知道这些子项的高度,也无法为容器设置高度:xxx。 问题答案: 如果我了解您要正确执行的操作,那么我认为使用CSS保持孩子的绝对位置是不可能的。 绝对

  • 问题内容: 考虑数组 我可以做 但这需要找到所有对象才可以找到第一个。 有没有更有效的方法? 我一直在试图找出我是否可以传递参数,从而获取的第一个分类,而不是最后一次。 编辑关于[dup]。 有几个原因使这个问题不同。 该问题和答案涉及价值观的平等。这是关于。 这些答案都遭受我的答案面临的同一问题。注意,我提供了一个完全有效的答案,但强调了它的效率低下。我正在寻找解决效率低下的问题。 编辑有关第二

  • 问题内容: 我只是编写了一个代码(使用TKinter)创建一个窗口并显示一个工作按钮。 但是我想在这个按钮下面有多个按钮。 如何设置按钮的行和列?我尝试添加,但是那行不通。 谢谢 问题答案: Astynax是正确的。要遵循您给出的示例: 应该创建3行按钮。使用网格比使用包好得多。但是,如果在一个按钮上使用网格,而在另一按钮上使用网格,则将不起作用,并且会出现错误。