BigInteger 上的二进制逻辑运算

BigInteger 也支持 Number 类型可用的二进制逻辑运算。与所有操作一样,它们通过调用方法来实现。

二进制或:

BigInteger val1 = new BigInteger("10");
BigInteger val2 = new BigInteger("9");

val1.or(val2);

输出:11(相当于 10 | 9

二进制和:

BigInteger val1 = new BigInteger("10");
BigInteger val2 = new BigInteger("9");

val1.and(val2);

输出:8(相当于 10 & 9

二进制 Xor:

BigInteger val1 = new BigInteger("10");
BigInteger val2 = new BigInteger("9");

val1.xor(val2);

输出:3(相当于 10 ^ 9

RightShift:

BigInteger val1 = new BigInteger("10");

val1.shiftRight(1);   // the argument be an Integer    

输出:5(相当于 10 >> 1

左移:

BigInteger val1 = new BigInteger("10");

val1.shiftLeft(1);   // here parameter should be Integer    

输出:20(相当于 10 << 1

二进制反转(非):

BigInteger val1 = new BigInteger("10");

val1.not();

输出:5

NAND(和非): *

BigInteger val1 = new BigInteger("10");
BigInteger val2 = new BigInteger("9");

val1.andNot(val2);

输出:7