Performans açısından bitly işlemleri için BigInteger (BigInteger.and BigInteger.or
) kullanılarak saf bitly işlemleri (& |^~
) kullanmanın bir avantajı var mı? bellek? başka herhangi bir şey?Java bitly işlemi Vs BigInteger
BigInteger'i bitly işlemleri için kullanıyorum çünkü sonuçta ortaya çıkan kod çok daha okunabilir. i kullanarak olacaktır kodu
örnek:
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'e dönüştürmek zorunda değilsiniz? –
Hayır, işlemler maskeleme amacıyla küçük sayılar (maks. 2^10) arasındadır. –
Yani, yeni bir BigInteger nesnesi veya iki tane oluşturmak zorunda kalmamanız büyük olasılıkla oldukça büyük bir performans bonusu. –