我想建立一个Z3的复制品,我需要在二进制到十进制和十进制到二进制转换算法的教育。
Z3中使用的算法应该是这样的。让我们举个例子,比如5*10^4,所以首先我们把5转换成二进制,所以我们有0101,我们把它设置在尾数单位的第13位。然后我们在指数上加13来补偿我们输入的位置t。然后我们将尾数归一化。现在指数是1101,尾数是1.01。然后它说我们需要将尾数乘以10,就像指数所指示的一样多。所以这将是1.01 * 10的四次?
但这对我来说毫无意义。我们对它进行了标准化,现在是乘法吗?算法也不会说指数实际上是如何设置的?
发布于 2019-02-05 08:07:02
根据Raúl Rojas的《the Processor》从的第8页开始,Z3浮点单元在处理指数的子单元中包含寄存器Aa、Ab、Ae和Af,在处理有效数的子单元中包含寄存器Ba、Bb、Be和Bf。
这对寄存器共同构成浮点寄存器R1,构成寄存器R2。
指数寄存器包含7-8位,有效数寄存器包含17-19位。变化的位数允许在算术过程中产生中间结果。
(注意文本中的一个错误:它说:“第二个移位器可以将Af中的有效位从1到16个位置向右移动,从1到15个位置向左移动。”但是,由于Af只有7位,因此必须使用另一个寄存器。正如前面的一句话所指出的,有一个输入Bf和输出Ba的移位器,以及另一个输入Bf和输出Bb的移位器,我希望Bf-to-Bb移位器是预期的。)
从第13页开始的“读取和显示指令”告诉我们如何将十进制输入转换为二进制浮点。它似乎缺少一些步骤,但我的解释是:
Rojas提到,负指数是通过乘以.1来处理的,但省略了该乘法的细节。
https://stackoverflow.com/questions/54519516
复制相似问题