有没有尝试过用无符号或有符号整数来表示浮点

Have there been attempts to represent floats with unsigned or signed integers?

本文关键字:整数 符号 表示 无符号 有没有      更新时间:2023-10-16

我想知道是否有研究和尝试设计类似浮点(IEEE754)的类型,其中小数部分和整数部分分别由intunsigned int处理,或者任何其他类型的设计,可以导致用整数实现类似浮点。

我特别想研究一下一般性能、数值表示的有效范围等。。。以及你对此能说的任何话。

您在寻找固定点号还是小数浮点?甚至在gcc中也实现了它们。另请参阅这些关于十进制算术的资源。

是的,尤其是在CPU中没有浮点单元的旧技术中。在某些情况下,如果你确切地知道这些值,你可以使用这种方法在这些平台上获得一些速度。然而,这种做法现在并不常见,而且这种做法早就消失了。我看到它主要用于性能至关重要的游戏。这种技巧属于一种奇怪的优化实践,即编写自己的sqrt或float->int转换函数。

不久前,我在comp.arch上问了这个问题,得到了一些非常好的答案,Mashey博士首先给出了这个问题:

|>我一直在想,是将所有的FP空间用于另外三个还是
|>四个整数单元,并为每个模型提供手动调整的FP-lib将
|>为自己买单,但我一直认为,如果可以这样做
|>付费,设计者会这么做的。也许现在超标量是
|>按照今天的顺序,很快就会完成。

1) FP硬件是存在的,因为如果您关心
的FP性能总之,用典型的
来模仿所需的行为是非常困难的以合理的速度进行整数运算。这些天,典型的
FP add/mul的延迟约为2-3个时钟,具有1个周期的重复率。

2) 当然,在微处理器方面有丰富的经验
提供图书馆进行FP而不使用FP单元的人的世界,
对于预计很少使用FP的系统,或
FP协处理器还不可用。
就是这样X86s、68KS和MIPS等。在MIPS的情况下:
(a) 有一些系统本身就有R2000
(b) 然后是一块很大的协处理器板
(c) 最后,R2010 FPU问世了,而且相当快,大多数
系统具有R2000&R2010.在嵌入式市场,
没有FPU的CPU有很多用途。

3) 换言之:对于任何竞争对手来说:
这真的是一个很酷的想法放弃硬件FP并通过整数操作进行模拟:-)

您询问的问题的一个例子是"不动点"算术。如果你注意到在一个位置系统中,小数点在哪里并不重要,只要你正确地跟踪它,你就可以决定把点放在特定的地方。这是我想说的一个例子,在基数10中:123+456=5791.23+4.56=5.79

好吧,你也可以在二垒做同样的事。决定你的观点应该在哪里,并进行操作。早在8088和IBM PS/2 8086时代,我就让我的汇编语言和C++学生用这种方式绘制了一个简单的Mandelbrot集。如果您将自己限制在CPU寄存器的大小,但比模拟浮点库快得多,那么精度会非常高。

该网站似乎有更详细的信息:http://x86asm.net/articles/fixed-point-arithmetic-and-tricks/