gpt4 book ai didi

assembly - 浮点加法汇编算法

转载 作者:行者123 更新时间:2023-12-02 06:47:01 25 4
gpt4 key购买 nike

我正在尝试为 picoblaze 微 Controller (1 个符号位、4 个指数位和 3 个尾数位)编写二进制 8 位浮点加法算法

我知道它可以处理正数,但是当也有负数时我不知道该怎么做。

我的主要问题是设置结果的符号位,有人可以解释如何正确设置吗?

我的想法是检查两个数字的符号;然后,如果它们都是正数,则将符号设置为 0,如果它们都是负数,则将符号设置为 1,并使用与之前相同的方法进行加法运算,如果一个为负,一个为正,则比较数字并使用较大数字的符号位,但我不确定如何比较这两个数字并且代码变得有点困惑,有没有更好的方法来做到这一点?

最佳答案

通常(忽略像 NaN 这样的东西),对于 A = B + C :

  • 如果 C量级大于 B , 交换 BC这样你就知道B必须具有“大于或等于”的大小。 注意:幅度忽略符号位(例如,-6 的幅度大于 +4,因为 6 > 4)。

  • 如果 BC有不同的符号,否定C并做 subtract_internal ;否则做 add_internal .

  • subtract_internal ,忽略符号位,减去幅度(不要忘记 B 必须具有“大于或等于”幅度),然后设置 A 的符号等于 B 之一的符号或 C (无论如何,它们将具有相同的符号)。

  • add_internal ,忽略符号位,加上幅度,然后设置 A 的符号等于 B 之一的符号或 C (无论如何,它们将具有相同的符号)。

另外,一般来说(忽略像 NaN 这样的东西),对于 A = B - C :

  • 如果 C量级大于 B , 交换 BC并否定它们(例如 A - C == (-C) - (-A) )以便您知道 B必须具有“大于或等于”量级。

  • 如果 BC有不同的符号,否定C并做 add_internal ;否则做 subtract_internal .

关于assembly - 浮点加法汇编算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56674027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com