ビット演算子で遊びたいと思っていました。具体的には、循環的なビット単位のシフトを行いたいと思っていました。だから私はJavaでこの例を試してみたときに、私は数101は、それが1つのステップを左シフトすると、今すぐ011になるはずであるしていると言う、それはちょうどこのように、ゼロの束を示していますJavaビットの循環シフトが機能しない
//Circular right shift
private static void testCircular() {
int x = 37;
System.out.println(x + " Is " + Integer.toBinaryString(x));
x = (x >>> 8) | (x << (Integer.SIZE - 8));
System.out.println(x + " Is " + Integer.toBinaryString(x));
}
これは私に与えます次の結果:
37 Is 100101
620756992 Is 100101000000000000000000000000
ご覧のとおり、何も移動していないことがわかります。私もstate = Integer.rotateRight(state,8);
メソッドを試しました、それは同じことをします。私はここで何が欠けていますか?
これは間違いなく正しい答えです。それをテストする簡単な方法はシフト '37'で32回で、元の '37'が得られます。 – kkflf
私は、バイナリ文字列がすべてのゼロを出力しないということを少し誤解しているのではないでしょうか? – kadde23
私の味については誤解を招く恐れがあります。完全な表現は印刷できますが、見つからない場合もあります。 – kaos