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

时间:2013-11-28 18:23:52

标签: c++ c math integer ieee-754

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

我特别好奇有关一般表演,数字表示的有效范围等等的研究......以及你可以说的任何事情。

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

I asked this on comp.arch some time ago and got some really good answers,由Mashey博士带领:

  

|>我想知道是否将所有FP空间用于另外三个或
  |>四个整数单位并为每个模型提供手动调整的FP库   |>为自己付出代价,但我总是想到,如果可以做到这一点   |>付出,设计师会做到的。也许现在超标量是
  |>一天的顺序,很快就会完成。

     

1)FP硬件在那里,因为如果你关心的是GPRS的性能   总之,很难用典型的方法来模仿所需的行为   整数运算速度合理。这些天,典型的   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并通过整数运算模拟:-)

答案 2 :(得分:1)

您在寻找fixed point个数字还是decimal floating points?甚至在gcc中实现了它们。另请参阅有关十进制算术的these资源。

答案 3 :(得分:1)

你要问的一个例子是“定点”算术。如果您注意到在位置系统中小数点的位置并不重要,只要您保持正确的跟踪,就可以决定将该点保持在特定位置。这是我在基地10中要说的一个例子:   123 + 456 = 579   1.23 + 4.56 = 5.79

嗯,你可以在基地2做同样的事情。决定你的观点应该在哪里并进行操作。回到8088和IBM PS / 2 8086天,我用汇编语言和C ++学生绘制了一个简单的Mandelbrot集。如果你将自己限制在CPU寄存器的大小,但比模拟的浮点库快得多,那就太精确了。

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