bigint支持加减乘除幂取余及位运算(不含>>>),不支持浮点字面量、math方法、一元加号和json原生序列化,混合运算需显式转换。

JavaScript 的 BigInt 类型支持整数范围内的常见数学运算,但所有操作都必须在两个 BigInt 值之间进行,不能与 Number 混用。
支持的算术运算
以下运算符可直接用于 BigInt 值,结果仍为 BigInt:
-
加法(+):如
10n + 20n→30n -
减法(-):如
50n - 15n→35n -
乘法(*):如
100n * 3n→300n -
幂运算(**):如
2n ** 5n→32n -
取余(%):如
10n % 3n→1n -
除法(/):结果向零截断,只保留整数部分,如
10n / 3n→3n(不是3.333...n)
支持的位运算
BigInt 支持全部标准位运算符,适用于底层整数操作:
- 按位与(&)、按位或(|)、按位异或(^)
- 按位非(~)
- 左移(、带符号右移(>>)
-
注意:
>>>(无符号右移)不被支持,会抛出错误,因为 BigInt 始终是有符号的
不支持的运算和限制
这些操作在 BigInt 上不可用或需特别注意:
-
不支持小数或浮点运算:不能表示
1.5n或1e3n,字面量含小数点或指数记法会报语法错误 -
不支持 Math 方法:如
Math.pow(2n, 3)无效,应改用2n ** 3n -
除法不返回小数:
/总是返回整数 BigInt,没有余数分离功能(可用%单独获取余数) -
不支持一元加号(+):如
+10n会报错,需用Number(10n)显式转换 -
JSON 不原生支持:
JSON.stringify(100n)抛错,需手动转成字符串再序列化
比较与类型交互
虽然不是“数学运算”,但常配合使用:
- 大小比较(
、<code>>、、<code>>=)可在 BigInt 和 Number 间安全使用,如10n > 5返回true -
==允许抽象相等(隐式转换),10n == 10为true,但不推荐;===严格相等要求类型一致,10n === 10为false - 混合运算必须显式转换:用
BigInt(10)或Number(10n),后者仅在值不超Number.MAX_SAFE_INTEGER时安全
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











