在性能方面,使用純粹的按位運算(& |^~
)與使用BigInteger(BigInteger.and BigInteger.or
)進行按位運算相比,是否有優勢?記憶?還要別的嗎?Java按位運算與BigInteger
因爲我使用BigInteger進行按位操作,因爲生成的代碼更可讀。爲此,我將使用代碼
例如:
BigInteger bNum1 = new BigInteger("0");
BigInteger bNum2 = new BigInteger("0");
BigInteger bNum3 = new BigInteger("0");
bNum1 = bNum1.setBit(0);
bNum2 = bNum2.setBit(1);
bNum3 = bNum3.setBit(2);
BigInteger bMask = bNum3.or(bNum1);
System.out.println(bMask.and(bNum1).equals(bMask));
System.out.println(bMask.and(bNum2).equals(bMask));
System.out.println(bMask.and(bNum3).equals(bMask));
System.out.println(bMask.and(bMask).equals(bMask));
int num1 = 1 << 0;
int num2 = 1 << 1;
int num3 = 1 << 2;
int mask = num3 | num1;
System.out.println((mask & num1) == mask);
System.out.println((mask & num2) == mask);
System.out.println((mask & num3) == mask);
System.out.println((mask & mask) == mask);
您不必轉換爲BigInteger? – 2013-04-30 08:24:29
不,操作在小數字(最大2^10)之間用於掩蓋目的 – 2013-04-30 08:25:11
我的意思是,您不必創建新的BigInteger對象或兩個對象可能是一個非常大的性能獎勵。 – 2013-04-30 08:25:55