私はコンピュータ組織クラスのために異なるプロジェクトで作業していました。私たちはBitWise演算を行っています。私たちの現在の仕事は自作の 'rotateLeft'メソッドをJava用に作成することです。32ビット整数のRotateLeft演算
javaはすでにInteger.rotateLeftを使用していますが、現在のタスクではこのプログラムで作業するように書いています。
注:int型の変数は、これらのビット列を等しく
×1 = 3 = 00000000000000000000000000000011
×2 = -11 = 1111111111111111111111111111110101
私の現在のプログラムは次のとおりです。
public class Demo
{
public static void main(String[]args)
{
int x1=3, x2=-11;
System.out.print("x1: ");
BitWise.printbit(x1);
System.out.print("rotateLeft(x1,2): ");
BitWise.printbit(rotateLeft(x1,2));
System.out.print("x2: ");
BitWise.printbit(x2);
System.out.print("rotateLeft(x2,2): ");
BitWise.printbit(rotateLeft(x2,2));
}
public static int rotateLeft(int i, int distance)
{
int mask= i>>distance;
return mask;
}
}
この操作は、のために働きますしかし、x1ビットパターンはビットをシフトするだけで、実際にはそれらを回転させません。
提案がありますか?
それが回転していないと言うにはどうすればよいですか?予想されるo/pと元の出力の詳細を共有できますか? – MSD
@MSD現在の設定私はビットをシフトするだけです。最初のビット列のために働くでしょう。しかし、私がシフトアウトしている最初の2ビットがもう一方の端でゼロになって以来、2番目のビットではありません。私はビットを回転させてもう一方の端にシフトさせる方法を思いついています –