博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS双精度64位 Number
阅读量:5780 次
发布时间:2019-06-18

本文共 2345 字,大约阅读时间需要 7 分钟。

typeof类型:

"undefined""object""number""string":utf-16两个字节为一个unite"boolean""function"

number类型: 双精度64位

可以表示2^64-2^53+3个数

1)正无穷   负无穷2)0,-03)正数4)NaN

双精度64位

63 62…….52    51 20 ……0    1  11111111   1111…1111    1位符号位sign + 11位指数位e + 52位小数位f        S*E*F    S=(-1)^sign……(-1)^0或(-1)^1        1)正负无穷:11指数位全为1,52位是0    2)NaN:       11指数位全为1,52位不全为0        1)+2)=3(被1位符号位 52位f位控制,E位不变,应该有2^53种,但是不同的nan)       总共=2^64-2^53+3              3)0,-0:     11指数位全为0,52位全为0        4)11指数位全为0,f不全为0:denormal        表示0~1之间的数,不包括1,不包括0            E=2^(-1022);            F=0.52位二进制              =0+b(52-1)*2^(-1)+…b(0-52) *2^-52              =0+1/2+1/4+1/8+…+1/2^52(f全为1的例子);        0~1之间很小的间距,指数E与normal情况下最小E一致,2^(1-1023)=2^-1022            每两个小数之间的差最小为=比如f位只有一个1与f位为0(非denormal值)的差                                =1*2^-1022*(0+2^-52)   -   1*2^-1022 * (0+0)                                =2^-1074            denormal最小值=1*2^-1022*(0+2^-52)=2^-1074        5)11指数位有0有1:normal        表示>=1的数            E=2^(e-1023);            e=b(52+0) * 2^0+b(52+1) *2^1+…+b(52+7)*2^10                        F=1.52位二进制              =1+b(52-1)*2^(-1)+…b(0-52) *2^-52              =1+1/2+1/4+1/8+…+1/2^52(f全为1的例子);                        normal最小值=1*2^(1-1023)*(1+0)=2^-1022;

单精度32位(假如JS用单精度32位表示number,情况如下)

31 30…….23    22 21 ……0    1  11111111   1111…1111    1位符号位sign+8位指数位e+23位小数位f        S*E*F    S=(-1)^sign……(-1)^0或(-1)^1        1)正负无穷:8指数位全为1,23位是0    2)NaN:         8指数位全为1,23位不全为0            1)+2)=3(被1位符号位 23位f位控制,E位不变,应该有2^24种,但是不同的nan)       总共=2^32-2^24+3        3)0,-0:     8指数位全为0,23位全为0        4)8指数位全为0,f不全为0:denormal        表示0~1之间的数,不包括1,不包括0            E=2^(-126);            F=0.23位二进制              =0+b(23-1)*2^(-1)+…b(0-23) *2^-23              =0+1/2+1/4+1/8+…+1/2^23(f全为1的例子);        0~1之间很小的间距,指数E与normal情况下最小E一致,2^(1-127)=2^-126            每两个小数之间的差最小为=比如f位只有一个1与f位为0(非denormal值)的差                                =1*2^-126*(0+2^-23)   -   1*2^-126 * (0+0)                                =2^-149            denormal最小值=1*2^-126*(0+2^-23)=2^-149        5)8指数位有0有1:normal        表示>=1的数            E=2^(e-127);            e=b(23+0) * 2^0+b(23+1) *2^1+…+b(23+7)*2^7                        F=1.23位二进制              =1+b(23-1)*2^(-1)+…b(0-23) *2^-23              =1+1/2+1/4+1/8+…+1/2^23(f全为1的例子);                        normal最小值=1*2^(1-127)*(1+0)=2^-126;

转载地址:http://iouyx.baihongyu.com/

你可能感兴趣的文章
bzoj1913
查看>>
L104
查看>>
分镜头脚本
查看>>
链表基本操作的实现(转)
查看>>
邮件发送1
查看>>
[转] libcurl异步方式使用总结(附流程图)
查看>>
编译安装LNMP
查看>>
[转]基于display:table的CSS布局
查看>>
crm 02--->讲师页面及逻辑
查看>>
AS3.0 Bitmap类实现图片3D旋转效果
查看>>
Eigen ,MKL和 matlab 矩阵乘法速度比较
查看>>
带三角的面包屑导航栏(新增递增数字)
查看>>
Web应用程序安全与风险
查看>>
codeforces 984 A. Game
查看>>
CSS居中
查看>>
One Person Game(概率+数学)
查看>>
CodeForces 258B Little Elephant and Elections :于1-m中找出七个数,使六个数里面的4和7个数比第七个数严格小:数位dp+dfs...
查看>>
MAP
查看>>
手把手教你测——上网快鸟
查看>>
用javascript获取地址栏参数
查看>>