BitSet
を使用してJavaでラップアラウンドして左シフトを実行する方法を試行していますが、ラップアラウンドを行う方法を理解できません。今私の方法は、最初のビットを削除し、その最初のビットを最後に追加することなく残りを保持します。BitSet LeftShiftラップアラウンドの問題
public static BitSet leftShift(int amount, BitSet b){
BitSet bit2 = new BitSet(b.length());
for(int i = b.length(); i > 0; i--){
bit2.set((i-amount)%b.length(), b.get(i));
}
return bit2;
}
あなたがより重要か、下位ビットにシフト意味ですか?あなたのコードは、それほど重要でない方向へシフトしようとしているように見えますが、通常は右シフトと呼ばれます。 – Misha
下位ビットにシフトします。したがって、11011は10111になり、左に1シフトします。 – user3614496