int 类型为什么是 2^-31 到 2^31 - 1 ?

279 阅读1分钟

js中int类型按照32位有符号二进制数运算。

  • 第1位为符号位
  • 剩下31位存储数据

一、最大整数为什么是 2 ^ 31 - 1 ?

原码:0111_1111_1111_1111_1111_1111_1111_1111

可知最大值为: 2 ^ 31 - 1;

(有 2 ^ 31 个数,去掉1个0,剩余是正数的数目,也即最大整数)

二、最小整数为什么是 - 2 ^ 31 ?

原码:1000_0000_0000_0000_0000_0000_0000_0000
(这里取 -0 作为最小的数。)

因此,对原码进行计算:

  • 1000_0000_0000_0000_0000_0000_0000_0000
  • 取反码:1111_1111_1111_1111_1111_1111_1111_1111
  • 加1: 1_1000_0000_0000_0000_0000_0000_0000_0000

即最小值 -2^31