Floating point 将2^1024表示为浮点数
2^1024是否可以用内置浮点类型表示,如double或long double 2^1024大于IEEE使用64位机器表示的最大浮点值 2^1024=Floating point 将2^1024表示为浮点数,floating-point,Floating Point,2^1024是否可以用内置浮点类型表示,如double或long double 2^1024大于IEEE使用64位机器表示的最大浮点值 2^1024= 17976931348623159077293051907890247336179769789423065727343008115773267580550096313270847 732240753602112011387987139335765878976881441662249284743063947412437776789342486548
17976931348623159077293051907890247336179769789423065727343008115773267580550096313270847
73224075360211201138798713933576587897688144166224928474306394741243777678934248654852763
02219601246094119453082952085005768838150682342462881473913110540827237163350510684586298
239947245938479716304835356329624224137216
最大IEEE浮点值,约为1.7977*10^308=
0 1111111111 0 1111111111111111111111111111111111111111111(b)=
这些数字的差异如下:
19958403095347198116563727130368385660674512604354575415025472424372118918689640657849579
65492635701089342446844192495243972437988393593660739171798284831420320005672951085676517
53772144436298718265335674454392399333081045512087038888885526844804415750712090687575604
16423584952303440099278848
这是最大IEEE编号,因为64位被分解为以下内容:
1 - sign
11 - exponent
52 - mantissa, or value
对于双精度类型,指数偏差为1023。注意:11110(b)=2046(d)。2046 - 1023 = 1023. 这比存储2^1024所需的1024稍小,也就是为什么2^1023可以正常工作。2^1024大于IEEE在64位机器上可表示的最大浮点值 2^1024=
17976931348623159077293051907890247336179769789423065727343008115773267580550096313270847
73224075360211201138798713933576587897688144166224928474306394741243777678934248654852763
02219601246094119453082952085005768838150682342462881473913110540827237163350510684586298
239947245938479716304835356329624224137216
最大IEEE浮点值,约为1.7977*10^308=
0 1111111111 0 1111111111111111111111111111111111111111111(b)=
这些数字的差异如下:
19958403095347198116563727130368385660674512604354575415025472424372118918689640657849579
65492635701089342446844192495243972437988393593660739171798284831420320005672951085676517
53772144436298718265335674454392399333081045512087038888885526844804415750712090687575604
16423584952303440099278848
这是最大IEEE编号,因为64位被分解为以下内容:
1 - sign
11 - exponent
52 - mantissa, or value
对于双精度类型,指数偏差为1023。注意:1111111111 0(b)=2046(d)。2046 - 1023 = 1023. 这比存储2^1024所需的1024还少,这就是为什么2^1023可以正常工作的原因
2^1024是否可以用内置浮点类型表示,如double或long double
21024的值为1.797693134862315907729…*10308
下面可以将21024的近似值打印为长双精度
。然而,该值通常超过了最大有限的double
:DBL_MAX
。表示21024的能力取决于实现。下面是一个常见的实现
#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;
}
注:C只要求
LDBL\u MAX>=DBL\u MAX>=1.0e+37
DBL_MAX
通常是or~1.7976931348623157…e+308的最大有限值。在某些系统上,
long double
范围与double
范围相匹配
2^1024是否可以用内置浮点类型表示,如double或long double
21024的值为1.797693134862315907729…*10308
下面可以将21024的近似值打印为长双精度
。然而,该值通常超过了最大有限的double
:DBL_MAX
。表示21024的能力取决于实现。下面是一个常见的实现
#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;
}
注:C只要求
LDBL\u MAX>=DBL\u MAX>=1.0e+37
DBL_MAX
通常是or~1.7976931348623157…e+308的最大有限值。在某些系统上,
long double
范围与double
范围相匹配 有一个标准的C函数,专门用于乘以2的幂,ldexpl
。因此,powl(2,1024)
可以是ldexpl(1,1024)
。(虽然对于一个具有良好的powl
或将powl(2,n)
优化为ldexpl(1,n)
或将powl(2,1024)
优化为0x1p1024l
的实现来说,这并不重要),但有一个标准的C函数,特别是用于乘以2的幂,ldexpl
。因此,powl(2,1024)
可以是ldexpl(1,1024)
。(尽管对于具有良好的powl
或将powl(2,n)
优化为ldexpl(1,n)
或将powl(2,1024)
优化为0x1p1024l
的实现来说,这并不重要)