gpt4 book ai didi

math - 如何减去两个 IEEE-754 正数?

转载 作者:行者123 更新时间:2023-12-03 08:26:19 28 4
gpt4 key购买 nike

所以我有点无奈。我想我了解如何对 IEEE-754 数字进行加法,但我在减法方面遇到了很大的问题。我感觉我的想法是对的,但我想和大家确认一下。

因此我们有以下两个 IEEE-754 编号:

x: 0 1000 0010 100 1000 0000 0000 0000 0000 
y: 0 1000 0011 010 1001 0000 0000 0000 0000

由于我们必须是正数并且我们想要减去它们,所以我的想法是取 y,反转尾数并计算

x+(-y)

一位导师告诉我,这是不正确的,我必须保持数字为正,然后减去它们。他为什么以及如何没有告诉我。

有人可以告诉我什么是正确的方法吗?

我对 x-y 方式的想法:

  1. 将指数从 x 扩展到 1000 0011
  2. 将 x 的尾数移动 1
  3. 按照正常方式将两个数字相减

最佳答案

OP 的 1-2-3 想法大部分都在正轨上,但可能错过了隐含的部分。

1 考虑隐含位。

   s eeee eeee mmm mmmm mmmm mmmm mmmm mmmm
x: 0 1000 0010 100 1000 0000 0000 0000 0000
y: 0 1000 0011 010 1001 0000 0000 0000 0000

s eeee eeee immm mmmm mmmm mmmm mmmm mmmm
x: 0 1000 0010 1100 1000 0000 0000 0000 0000
y: 0 1000 0011 1010 1001 0000 0000 0000 0000

2 调整幅度较小的数字以形成公共(public)指数。 (增加博览会,移动“尾数”)

   s eeee eeee immm mmmm mmmm mmmm mmmm mmmm extra bits
x: 0 1000 0011 110 0100 0000 0000 0000 0000 0
y: 0 1000 0011 1010 1001 0000 0000 0000 0000

2.5 如果符号位不同,则翻转第二个并执行加法。但由于在这种情况下也是如此,所以没什么可做的。

3 用较大的值减去较小的值。

   s eeee eeee immm mmmm mmmm mmmm mmmm mmmm
y: 0 1000 0011 1010 1001 0000 0000 0000 0000
x: 0 1000 0011 110 0100 0000 0000 0000 0000 0
d: 0 1000 0011 0100 0101 0000 0000 0000 0000 0

4 进行调整,使 MSbit 为隐含的 1(移位“尾数”,递减指数)。

   s eeee eeee immm mmmm mmmm mmmm mmmm mmmm
d: 0 1000 0010 1000 1010 0000 0000 0000 0000

5 考虑反向减法。 (翻转符号)

   s eeee eeee immm mmmm mmmm mmmm mmmm mmmm
d: 1 1000 0010 1000 1010 0000 0000 0000 0000

6 轮 - 在这种情况下没有值变化。

   s eeee eeee immm mmmm mmmm mmmm mmmm mmmm
d: 1 1000 0010 1000 1010 0000 0000 0000 0000

7 去掉隐含位,形成编码结果。

   s eeee eeee mmm mmmm mmmm mmmm mmmm mmmm
d: 1 1000 0010 000 1010 0000 0000 0000 0000

为简洁起见,省略了非数字、次正常、溢出、无穷大和舍入的详细信息。


注意 IEEE-754 使用“有效数”,而不是“尾数”。

关于math - 如何减去两个 IEEE-754 正数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66552267/

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