ieee-754相关内容

32 位到 16 位浮点转换

我需要一个跨平台的库/算法来在 32 位和 16 位浮点数之间进行转换.我不需要用 16 位数字进行数学运算;我只需要减小 32 位浮点数的大小,以便它们可以通过网络发送.我正在使用 C++. 我知道我会损失多少精度,但这对我的应用程序来说没问题. IEEE 16 位格式会很棒. 解决方案 std::frexp 从普通浮点数或双精度数中提取有效数和指数——然后您需要决定如何处理 ..
发布时间:2021-12-20 09:59:24 C/C++开发

融合乘加和默认舍入模式

使用 GCC 5.3 以下代码与 -O3 -fma float mul_add(float a, float b, float c) {返回 a*b + c;} 产生以下组件 vfmadd132ss %xmm1, %xmm2, %xmm0退 我注意到 GCC 使用 -O3 已经在 GCC 4.8 中这样做了. 带有 -O3 -mfma 的 Clang 3.7 生成 vmulss % ..
发布时间:2021-12-18 23:22:42 其他开发

把浮点数变成字符串

我已经开始说明何时需要将 IEEE-754 单精度和双精度数字转换为具有 10 基数的字符串.有FXTRACT指令可用,但它只提供以2为底的指数和尾数,因为数字计算公式是: value = (-1)^sign * 1.(mantissa) * 2^(exponent-bias) 如果我有一些特定底数的对数指令,我将能够更改表达式中 2exponent - bias 部分的底数,但目前我不知道该 ..

如何减去 IEEE 754 数字?

如何减去 IEEE 754 数字? 例如:0,546875 - 32.875... -> 0,546875 在 IEEE-754 中是 0 01111110 10001100000000000000000 -> -32.875 在 IEEE-754 中是 1 10000111 01000101111000000000000 那么我该如何做减法呢?我知道我必须使两个指数相等, ..
发布时间:2021-12-17 15:19:17 其他开发

用双精度表示整数

double(给定字节数,具有合理的尾数/指数平衡)能否始终完全精确地保持该字节数一半的无符号整数的范围? 例如八字节双精度型能否完全精确地保存四字节无符号整数的数字范围? 这将归结为两个字节的浮点数是否可以容纳一个字节的无符号整数的范围. 一个一字节的无符号整数当然是 0 -> 255. 解决方案 一个 IEEE754 64 位双精度型可以表示任何 32 位整数,仅仅因 ..
发布时间:2021-12-17 14:59:06 其他开发

在 JS 中读/写浮点字节数

有什么办法可以在 JS 中读取浮点值的字节?我需要的是将原始 FLOAT 或 DOUBLE 值写入我需要制作的某种二进制格式,那么有没有办法获得逐字节的 IEEE 754 表示?当然还有同样的写作问题. 解决方案 Would 这个片段帮助? var parser = new BinaryParser,四十 = parser.encodeFloat(40.0,2,8),二十 = parse ..
发布时间:2021-12-17 14:47:48 前端开发

提取 Javascript 数字的指数和尾数

是否有一种相当快速的方法可以从 Javascript 中的数字中提取指数和尾数? AFAIK 没有办法在 Javascript 中获取数字背后的位,这让我觉得我在看一个分解问题:找到 m 和 n 使得 2^n * m = k 对于给定的 k.由于整数分解是在 NP 中,我只能假设这将是一个相当困难的问题. 我正在实现一个用于生成 Javascript 的 GHC 插件,需要实现 dec ..
发布时间:2021-12-14 12:04:18 前端开发

PHP 中的类型杂耍和(严格)大于/小于比较

PHP 以其类型杂耍而闻名.我必须承认这让我很困惑,而且我很难在比较中找出基本的逻辑/基本事物. 例如:如果 $a >$b 为真且 $b >$c 是真的,这一定意味着 $a >$c 也总是真的吗? 按照基本逻辑,我会说是,但是我很困惑我在这方面并不真正信任 PHP.也许有人可以提供一个例子,但事实并非如此? 另外我想知道严格小于和严格大于运算符(因为它们的含义被描述为严格的,我过 ..
发布时间:2021-12-12 13:24:21 PHP

Matlab 与 C++ 双精度

我正在将一些代码从 Matlab 移植到 C++. 在 Matlab 中 格式长D = 0.689655172413793(这是 1.0/1.45)E = 2600/D//我得到 E = 3.770000000000e+03 在 C++ 中 double D = 0.68965517241379315;//(这是 1.0/1.45)双E=2600/D;//我得到 E = 3769.99 ..
发布时间:2021-12-08 14:42:02 C/C++开发

是否有任何现实世界的 CPU 不使用 IEEE 754?

我正在优化数字/统计库的排序函数,基于这样一个假设,即在过滤掉任何 NaN 并稍微处理一下之后,浮点数可以作为 32 位整数进行比较而不改变结果,而双精度数可以被比较为 64 位整数. 这似乎将这些数组的排序速度提高了 40%,只要浮点数的位级表示是 IEEE 754,我的假设就成立.人们实际上是否有任何真实世界的 CPU使用(不包括在嵌入式设备中,该库不针对它)使用其他一些可能会打破这个假 ..
发布时间:2021-12-08 11:31:37 其他开发

将 IEEE 754 double 转换为字符串的算法?

许多使用 IEEE 754 双精度的编程语言提供了一个库函数来将这些双精度转换为字符串.比如C有sprintf,C++有stringstream,Java有Double.toString等 在内部,这些功能是如何实现的?也就是说,鉴于它们经常受到程序员选择的精度限制,它们使用什么算法将双精度值转换为字符串表示? 谢谢! 解决方案 各种软件环境用于将浮点数转换为字符串表示的代码通 ..

为什么浮点数的打印方式如此不同?

众所周知,(大多数)浮点数没有精确存储(使用 IEEE-754 格式时).所以不应该这样做: 0.3 - 0.2 === 0.1;//非常错误 ... 因为它会导致 false,除非使用了某些特定的任意精度类型/类(Java/Ruby, BCMath 在 PHP 中,Math::BigInt/Math::BigFloat 在 Perl 中,仅举几例). 然而我想知道为什么当人们试图打印这 ..
发布时间:2021-12-03 10:14:07 PHP

C# 中的浮点数学是否一致?是真的吗?

不,这不是另一个“为什么是 (1/3.0)*3 != 1" 问题. 我最近阅读了很多关于浮点的文章;具体来说,相同的计算可能如何在不同的架构或优化设置下给出不同的结果. 这是存储重播或点对点联网(与服务器-客户端相反),它依赖于所有客户端在每次运行程序时生成完全相同的结果——一个浮点计算中的小差异可能导致不同机器上的游戏状态截然不同(甚至在同一台机器上!) 即使在“遵循"IEEE ..
发布时间:2021-12-02 13:48:20 C#/.NET

Java中的Float和double数据类型

float 数据类型是单精度 32 位 IEEE 754 浮点数,double 数据类型是双精度 64 位 IEEE 754 浮点数. 什么意思?什么时候应该使用 float 而不是 double ,反之亦然? 解决方案 维基百科页面这是一个很好的起点. 总结: float 以 32 位表示,其中 1 个符号位、8 位指数和 23 位有效数(或从科学记数法中得出的数字:2 ..
发布时间:2021-11-25 14:36:17 Java开发

64 位浮点数在所有现代 PC 上的行为是否相同?

我想知道我是否可以假设对相同的 64 位浮点数进行相同的操作在任何现代 PC 和最常见的编程语言中给出完全相同的结果?(C++、Java、C# 等).我们可以假设,我们正在对数字进行运算,结果也是一个数字(没有 NaN、INF 等). 我知道有两个非常相似的使用浮点数的计算标准(IEEE 854-1987 和 IEEE 754-2008).但是我不知道实际情况如何. 解决方案 实现 ..
发布时间:2021-11-25 07:04:03 C#

32 位和 64 位操作系统中的双字节大小

运行时 double 大小有区别吗我的应用程序在 32 位和 64 位环境下? 如果我没记错的话,32位环境下的double会占用0后的16位,而64位环境下的double会占用32位,对吗? 解决方案 不,一个 IEEE 754 double-精度浮点数总是64位.类似地,单精度 float 总是 32 位. 如果您的问题特别是关于 C# 和/或 .NET(如您的标签所示), ..
发布时间:2021-11-25 06:18:08 C#/.NET

.NET Core 中游戏开发的浮点确定性

背景 我们正在使用 C# 和 .NET Core 开发 RTS 游戏引擎.与大多数其他实时多人游戏不同,RTS 游戏倾向于通过将玩家输入同步到其他玩家,并同时在所有客户端上同步运行游戏模拟来工作.这要求游戏逻辑具有确定性,以免游戏不同步. 非确定性的一个潜在来源是浮点运算.从我收集到的主要问题是旧的 x87 FPU 指令 - 它们使用内部 80 位寄存器,而 IEEE-754 浮点值是 ..
发布时间:2021-11-24 17:10:04 C#/.NET