草庐IT

ieee-754

全部标签

php - 将 IEEE 754 转换为十进制 float

我有一个我认为是单精度或double(不确定)的IEEE754,我想在PHP上将它转换为十进制。给定4个十六进制值(可能是小端格式,所以基本上颠倒顺序)4A,5B,1B,05我需要将它转换为十进制值,我知道这会非常接近4724.50073。我尝试了一些在线转换器,但它们与预期结果相去甚远,所以我显然遗漏了一些东西。如果我echo0x4A;我得到74,其他的是91、27和5。不知道从这里把它带到哪里... 最佳答案 要将其转换为float,请使用unpack。如果字节顺序不正确,您必须在解包之前自行反转它。4个字节(32位)通常表示它

c++ - 单精度 float 的第 24 个小数位在哪里? IEEE 754

今天我发现自己在做一些位操作,我决定稍微刷新一下我的浮点知识!在我看到这个之前,一切都很好:...23fractionbitsofthesignificandappearinthememoryformatbutthetotalprecisionis24bits我一遍又一遍地阅读它,但我仍然无法弄清楚第24位在哪里,我注意到一些关于binarypoint的东西,所以我假设它是尾数和指数。我不太确定,但我相信他的作者在谈论这一点:Binarypoint?|s------e-----|-------------m----------0-01111100-0100000000000000000

c++ - NAN 传播和 IEEE 754 标准

我正在设计一个新的微处理器指令集(www.forwardcom.info),我想使用NAN传播来跟踪错误。然而,IEEE754浮点标准中有许多奇怪之处阻止了这一点。首先,我想使用NAN传播而不是错误捕获的原因是我有可变长度的vector寄存器。例如,如果我有一个包含8个元素的浮点vector,第一个元素为1/0,第六个元素为0/0,那么我只会得到一个陷阱,但是如果我在计算机上运行相同的程序vector长度的一半然后我得到两个陷阱:一个用于无穷大,一个用于NAN。我希望结果独立于vector长度,因此我需要依赖NAN和INF的传播而不是捕获。NAN和INF值将通过计算传播,以便可以在最终

c++ - IEEE-754 浮点计算、相等和缩小

在下面的代码中,函数foo1、foo2和foo3是等价的。然而,当runfoo3没有从循环中终止时,是否存在这种情况的原因?templateTfoo1(){Tx=T(1);Ty=T(0);for(;;){if(x==y)break;y=x;++x;}returnx;}templateTfoo2(){Tx=T(0);for(;;){Ty=x+T(1);if(!(x!=y))break;++x;}returnx;}templateTfoo3(){Tx=T(0);while(x!=(x+T(1)))++x;returnx;}intmain(){printf("1float:%20.5f\n"

c++ - 如果硬编码 float 可以用 IEEE 754 中的二进制格式表示,它是否精确?

例如,0、0.5、0.15625、1、2、3...是从IEEE754转换而来的值。它们的硬编码版本是否精确?例如:是floata=0;if(a==0){returntrue;}总是返回真?其他例子:floata=0.5;floatb=0.25;floatc=0.125;a*b是否总是等于0.125而a*b==c总是为真?还有一个例子:inta=123;floatb=0.5;a*b总是61.5吗?或者一般来说,整数乘以IEEE754二进制float是否精确?或者一个更普遍的问题:如果值是硬编码的,并且值和结果都可以用IEEE754中的二进制格式表示(例如:0.5-0.125),那么该值是

c++ - 浮点运算是否会导致 IEC 559/IEEE 754 浮点类型的无限未定义行为

我正在通读Infinitynotconstexpr,这似乎表明创建无穷大是未定义的行为:[expr]/4:Ifduringtheevaluationofanexpression,theresultisnotmathematicallydefinedornotintherangeofrepresentablevaluesforitstype,thebehaviorisundefined.但是,如果std::numeric_limits::is_iec559equalstrue,似乎给了我们更多的保证。下面的代码利用这个保证来创建一个无限的数字。在constexpr上下文中执行时,它会导致

c++ - IEEE Std 754 Floating-Point : let t := a - b, 标准是否保证 a == b + t?

假设t,a,b都是double(IEEEStd754)变量,a,b不是NaN(但可能是Inf)。在t=a-b之后,我一定有a==b+t吗? 最佳答案 绝对不是。一个明显的例子是a=DBL_MAX,b=-DBL_MAX。那么t=INFINITY,所以b+t也是INFINITY。可能更令人惊讶的是,有些情况下会发生这种情况而没有任何溢出。基本上,它们都是a-b不准确的形式。例如,如果a是DBL_EPSILON/4并且b是-1,则a-b为1(假设默认舍入模式),a-b+b则为0。我提到第二个示例的原因是,这是在IEEE算法中强制舍入到特定

c++ - IEEE 浮点标准的 (+0)+(-0) 是什么?

IEEE浮点标准明确定义了对任何float的任何算术运算,我说得对吗?如果是,出于好奇,(+0)+(-0)是什么?有没有办法在实践中用C++或其他常用的编程语言来检查这些事情? 最佳答案 有符号零的IEEE754算术规则声明+0.0+-0.0取决于舍入模式。在默认舍入模式下,它将是+0.0。当向-∞四舍五入时,它将是-0.0。您可以像这样在C++中检查它:#includeintmain(){std::coutOutput:+0.0++0.0==0+0.0+-0.0==0-0.0++0.0==0-0.0+-0.0==-0

ios - 更新到 Xcode 6 后 : Undefined symbols for architecture armv7: "___gnu_f2h_ieee"

几个小时以来,我一直在努力寻找问题,但没有结果。我已经更新到Xcode6,从那时起在ioS8.0和7.1上都出现了这个错误:Undefinedsymbolsforarchitecturearmv7:"___gnu_f2h_ieee",referencedfrom:_playbackCallbackinAudio.old:symbol(s)notfoundforarchitecturearmv7clang:error:linkercommandfailedwithexitcode1(use-vtoseeinvocation)感谢您的帮助。编辑(完整构建日志错误):Ld/Users/rjc

java - 重新审视 IEEE-754 double (64 位浮点)与长整型(64 位整数)

我正在重新审视一个问题(Howtotestifnumericconversionwillchangevalue?),据我所知,这个问题已经完全解决了。问题是检测特定数值何时会溢出JavaScript的IEEE-754数字类型。上一个问题使用的是C#,标记的答案非常有效。现在我正在做完全相同的任务,但这次是在Java中,但它不起作用。据我所知,Java使用IEEE-754作为其double数据类型。所以我应该能够来回转换它以迫使精度损失但它往返。对此感到困惑,我开始深入研究Java,现在我真的很困惑。在C#和Java中,long的最小值和最大值是相同的:longMIN_VALUE=-92