代码之家  ›  专栏  ›  技术社区  ›  zell

将2^1024表示为浮点数

  •  -1
  • zell  · 技术社区  · 6 年前

    2 回复  |  直到 6 年前
        1
  •  1
  •   chux    6 年前

    2^1024是否可以用内置的浮点类型表示,如double或long double?

    1024个 308个

    作为一个 long double double DBL_MAX .代表2的能力

    #include <float.h>
    #include <math.h>
    #include <stdio.h>
    int main(void) {
      long double two1024 = powl(2,1024);
      printf("2^1024  %.21Le\n", two1024);
      printf("DBL_MAX %.21Le\n", DBL_MAX*1.0L);
      return 0;
    }
    

    输出

                             v----- Difference begins here
    2^1024  1.797693134862315907729e+308
    DBL_MAX 1.797693134862315708145e+308
    


    C只要求 LDBL_MAX >= DBL_MAX >= 1.0e+37
    dbl_最大值 binary64 或~1.7976931348623157…E+308。
    范围与 范围。

        2
  •  1
  •   Michael Conard    6 年前

    2^1024个=

    17976931348623159077293051907890247336179769789423065727343008115773267580550096313270847
    73224075360211201138798713933576587897688144166224928474306394741243777678934248654852763
    02219601246094119453082952085005768838150682342462881473913110540827237163350510684586298
    239947245938479716304835356329624224137216 
    

    0 1111111111 0 1111111111111111111111111111111111111111111111111111111111111111(b)=

    17976931348623157081452742373170435679807056752584499659891747680315726078002853876058955
    86327668781715404589535143824642343213268894641827684675467035375169860499105765512820762
    45490090389328944075868508455133942304583236903222948165808559332123348274797826204144723
    168738177180919299881250404026184124858368
    

    19958403095347198116563727130368385660674512604354575415025472424372118918689640657849579
    65492635701089342446844192495243972437988393593660739171798284831420320005672951085676517
    53772144436298718265335674454392399333081045512087038888885526844804415750712090687575604
    16423584952303440099278848
    

    这是最大的IEEE数字,因为64位按以下方式分解:

    1 - sign
    11 - exponent
    52 - mantissa, or value