0

Java の int で右回転 (バレル シフト) を実行しようとしています。

Input:  0000 0000 0110 1001
Output: 1000 0000 0011 0100

右シフト ( >>) を実行できることはわかっていますが、これを組み合わせて回転を作成する方法がわかりません (可能だと確信しています!)。

方法はあると思いますが、java.lang.Mathシフトのみを使用する方法を考えています。

何か案は?

4

2 に答える 2

4

これに対する単一の操作があるかどうかはわかりません。しかし、次のようなもの:

int x = (x >> 1) | (x << 31)  // or 15 if you really did mean 16-bit

トリックを行うでしょう。

于 2011-03-01T22:23:39.347 に答える
0
int rotated_by_one = ((value & 1)<<15) | (value >> 1)
于 2011-03-01T22:23:15.943 に答える