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

Java-使用按位运算的循环移位

范志勇
2023-03-14
问题内容

我想知道如何实现由位表示的位串的k 循环 右移int

public int rtCircShift(int bits, int k)
{
    return bits >> k;
}

这些代码所做的全部是 返回0 ,如何使其循环移位?


问题答案:

这应该工作:

 return (bits >>> k) | (bits << (Integer.SIZE - k));

另请参阅Wikipedia上有关循环移位的文章。



 类似资料:
  • 我目前正在学习位操作,我的任务是做一个左旋转的4位整数。 我的4位左旋转代码是 我想做一个4位循环移位,以保持作为一个4位后旋转,但似乎不能理解它是如何工作的。 例如:10(1010)左旋转1位后给出5(0101),但它给出的值是21,比我的4位多。 任何能让我理解这个问题的帮助都将不胜感激!

  • 问题内容: 当遇到按位移位运算符时,我遇到了一个有趣的场景。如果第二个操作数为负,按位移位运算如何工作?。 即,<< << b,“ <<”将a中的位模式向左移动b位。但是,如果b为负数,在运行时是否应该出错? 我能够成功运行以下代码,但我不知道它是如何工作的? 输入项 结果 “ a”的ASCII码为97。有人可以帮助我了解其工作原理吗? 问题答案: 但是,如果b为负数,在运行时是否应该出错? 不符

  • 问题内容: 我有使用Java的这种行为: 输出:0 0 16 32 Java移位是循环的吗?如果不是,为什么当b << 30时我得到0,而当b << 32时我得到16? 问题答案: 移位不是循环的;对于s 移位,Java仅使用5个最低有效位,因此等效于(等效于等)。您可以简单地求出移位量,然后除以32的余数。 移位s 也会发生类似的情况,其中Java仅使用6个最低有效位,因此等效于。 JLS的第1

  • 我必须编写一个函数,对y位置的位进行左循环移位。例如,如果我将:01011000和2作为y,则函数必须返回011000001。 我已经尝试使用但它似乎是无用的。

  • 4、循环移位指令 循环移位指令有:循环左移ROL(Rotate Left)和循环右移ROR(Rotate Right)。 指令的格式:ROL/ROR Reg/Mem, CL/Imm 受影响的标志位:CF和OF 循环左移/右移指令只是移位方向不同,它们移出的位不仅要进入CF,而且还要填补空出的位。具体功能如下图(a)、(b)所示。 (a)、ROL (b)、ROR 下面是几个循环移位的例子及其执行结果

  • 考虑以下代码: 我可以理解Python(和其他语言)中的算术运算符,但我从来没有很好地理解过“按位”运算符。在上面的示例中(来自Python书籍),我理解左移位,但不理解其他两个。 此外,位运算符实际用于什么?我想举一些例子。