2012-01-03 57 views
1

我正在寻找一个大概的想法。我知道IEEE浮点或双精度是如何存储的,但我不知道如何精确地乘以它。如何将整数乘以IEEE双精度转换指令?

我的一个想法是将整数存储为double(在浮点寄存器中),然后使用正常的double乘法指令。

当一个整数倍增IEEE IEEE时是否有任何特性?正如在“你必须只乘以指数”或类似的东西?

任何帮助将不胜感激。

+0

此http://www.divms.uiowa.edu/~jones/bcd/divide.html可能对您有用,具体取决于您要做什么,您可能不需要IEEE格式的应用程序,记住自己的指数并将整个事情作为尾数。 – 2012-01-03 14:47:34

回答

3

您可以乘以2^n的单精度浮点数或双精度浮点数,只需在指数中加n,但对于任何其他乘数值,您也会改变尾数,这显然是非平凡的。

+0

感谢您的回答。有没有办法手动存储整数(不使用任何转换指令)作为双? – seawhale 2012-01-03 10:28:49

+0

如果你知道整数在编译时的值,那么是的,你可以用你喜欢的任何格式存储它,但是如果你正在谈论运行时然后否,那么没有魔法可以让你将整数转换为不需要使用明确的指令来完成这个任务,或者使用一大堆整数位指令。 – 2012-01-03 10:31:36

+0

谢谢。我想我必须做一些小小的转换;) – seawhale 2012-01-03 14:35:33

1

如果您使用的是x86,则可以使用指令FIMUL,该指令完全符合您的需求。但是,当你处于mips状态时,对于一般情况,你没有比转换和乘数更好的方法。

相关问题