【JS】Number类型范围与位运算妙用

871 阅读2分钟

Number类型数值范围

IEEE 754 标准

JavaScript 里的数字是采用 IEEE 754 标准的 64 位双精度浮点数,最高的1位是符号位,接着的11位是指数,剩下的52位为有效数字 内存表示示意图

  • 第0位:符号位,s 表示 ,0表示正数,1表示负数;
  • 第1位到第11位:储存指数部分, e 表示 ;
  • 第12位到第63位:储存小数部分(即有效数字),f 表示,
  • 符号位决定了一个数的正负,指数部分决定了数值的大小,小数部分决定了数值的精度。 IEEE 754规定,有效数字第一位默认总是1,不保存在64位浮点数之中。也就是说,有效数字总是1.xx…xx的形式,其中xx..xx的部分保存在64位浮点数之中,最长可能为52位。因此,JavaScript提供的有效数字最长为53个二进制位(64位浮点的后52位+有效数字第一位的1)。

**对于浮点数:**JavaScript所能表示的数值范围为正负1.7976931348623157乘以10的308次方,其最小所能表示的小数为正负5乘以10的负324次方。1.7976931348623157e+308和5e-324
对于整数: JavaScript能表示并进行精确算术运算的整数范围为:正负2的53次方Math.pow(2, 53),也即从最小值-9007199254740992到最大值+9007199254740992之间的范围;对于超过这个范围的整数,JavaScript依旧可以进行运算,但却不保证运算结果的精度。

位运算符

对于位运算,JavaScript仅支持32位整型数. 使用位运算符号时,javascript也会将Number转化为32位在进行运算。(-4294967296 ~ 4294967296)

位运算符在JS中的妙用