Floating point 将2^1024表示为浮点数

Floating point 将2^1024表示为浮点数,floating-point,Floating Point,2^1024是否可以用内置浮点类型表示,如double或long double 2^1024大于IEEE使用64位机器表示的最大浮点值 2^1024= 17976931348623159077293051907890247336179769789423065727343008115773267580550096313270847 732240753602112011387987139335765878976881441662249284743063947412437776789342486548

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

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。注意: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
的实现来说,这并不重要)