JS雙精度64位 Number

typeof類型:code

"undefined"
"object"
"number"
"string":utf-16兩個字節爲一個unite
"boolean"
"function"

number類型: 雙精度64位
能夠表示2^64-2^53+3個數orm

1)正無窮
   負無窮

2)0,-0

3)正數

4)NaN

雙精度64位string

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,狀況以下)it

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;
相關文章
相關標籤/搜索