JavaBigInteger上的二进制逻辑运算

示例

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)

二进制异或:

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

val1.xor(val2);

输出:3(相当于10 ^ 9)

右移:

BigInteger val1 = new BigInteger("10");

val1.shiftRight(1);   // 参数为整数

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

左移:

BigInteger val1 = new BigInteger("10");

val1.shiftLeft(1);   // 这里的参数应该是整数

输出: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