バイナリ文字列を3ビット循環する必要があります。これをJavaで実装するにはどうすればよいですか?
「<<」演算子は正確にはどういう意味ですか?前もって感謝します。
要素ごとに、次の2つのことから新しい値を作成する必要があります。
1)値<< 3
2)その下の値(または最小値の場合は一番上の値)>> sizeof(value)-3
バイナリ文字列の大きさがわからない場合は、2)(「残り物」)をすべて別のコレクションに保存し、上向きのビットシフトをすべて行ったら、それらをすべて追加することをお勧めします。そうしないと、ロジックが複雑になりすぎます。
それは簡単です。文字列では回転を実行できないことに注意してください。むしろ、あなたが数値でそれをすることができること。試す:
byte i = 15;
byte j = (byte)(i << 3) ;
byte k = (byte)(i >> 3);
System.out.println("Here is result i=" + i + "and j = " + j + "and k = " + k);
これにより、i = 15、j = 120、およびk=1になります。それは非循環シフトであることを意味します。
循環シフトの場合、次のことを試すことができます。
byte i = 15;
byte j = (byte) ((i << 3) + (i >> 5));
byte k = (byte) ((i >> 3) + (i << 5));
5は8-3のようなもので、8はデータ型が持つことができるビット数です。