testbit方法用于检测biginteger二进制表示中索引n位(从0开始、lsb为第0位)是否为1:若为1返回true,否则false;n<0时抛arithmeticexception。

testBit 是 BigInteger 类的一个方法,用于**检测该整数二进制表示中指定索引位置的比特是否为 1**。注意:索引从 0 开始,且对应的是**最低有效位(LSB)**,即第 0 位是二进制最右边那一位。
testBit 的基本用法
调用方式:bigInt.testBit(n),返回 boolean:
- 如果
n位置的比特是 1,返回true; - 如果该位置是 0 或超出当前数值的二进制位宽(即高位补零),也返回
false; -
n必须 ≥ 0,否则抛出ArithmeticException。
理解“位置”含义:从右往左、从 0 开始计数
例如:new BigInteger("13") 对应二进制 1101(4 位):
- 第 0 位(最右)是
1→testBit(0)返回true; - 第 1 位是
0→testBit(1)返回false; - 第 2 位是
1→testBit(2)返回true; - 第 3 位是
1→testBit(3)返回true; - 第 4 位及更高位未显式存在,按补零规则视为 0 →
testBit(4)返回false。
负数的 testBit 行为
BigInteger 使用二进制补码表示负数,但 testBit 操作仍基于其无限精度补码形式。例如:new BigInteger("-1") 在补码中是全 1(…1111),所以 testBit(n) 对任意非负 n 都返回 true。
-
BigInteger.valueOf(-1).testBit(0)→true; -
BigInteger.valueOf(-2).testBit(0)→false(-2 补码末位为 0); -
BigInteger.valueOf(-2).testBit(1)→true(-2 补码为 …1110,第 1 位是 1)。
常见使用场景与注意事项
常用于位掩码判断、权限校验、算法位操作等:
- 检查某标志位是否启用(如权限位、状态位);
- 配合
setBit、clearBit、flipBit实现位级控制; - 注意:
testBit不修改原对象(BigInteger不可变); - 避免传入负索引,否则立即抛异常;
- 对非常大的数,
testBit效率仍较高,内部直接访问底层位数组或按需计算。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











