首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何减去两个正数IEEE-754?

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

Stack Overflow用户
提问于 2021-03-09 17:54:37
回答 2查看 258关注 0票数 2

所以我有点无助。我想我知道如何在IEEE-754上加法,但是我在减法方面有很大的问题。我有种感觉,我的想法是正确的,但我想和你们核实一下。

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

代码语言:javascript
复制
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. 减去这两个数字的正常方式

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-09 18:30:54

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

1对隐含位进行解释。

代码语言:javascript
复制
   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调整较小的数量级,形成一个共同指数。(增量博览会,移位“尾数”)

代码语言:javascript
复制
   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从较大处减去较小的部分。

代码语言:javascript
复制
   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(移位尾数,递减指数)。

代码语言:javascript
复制
   s eeee eeee immm mmmm mmmm mmmm mmmm mmmm
d: 0 1000 0010 1000 1010 0000 0000 0000 0000

5倒排减法。(翻转标志)

代码语言:javascript
复制
   s eeee eeee immm mmmm mmmm mmmm mmmm mmmm
d: 1 1000 0010 1000 1010 0000 0000 0000 0000

6回合-在这种情况下没有价值变化。

代码语言:javascript
复制
   s eeee eeee immm mmmm mmmm mmmm mmmm mmmm
d: 1 1000 0010 1000 1010 0000 0000 0000 0000

7删除隐含位,形成编码结果。

代码语言:javascript
复制
   s eeee eeee mmm mmmm mmmm mmmm mmmm mmmm
d: 1 1000 0010 000 1010 0000 0000 0000 0000

不-a-数字、次法线、溢出、无穷大和舍入的细节为了简洁而省略.

注IEEE-754使用“重要”,而不是“尾数”。

票数 4
EN

Stack Overflow用户

发布于 2021-03-09 18:18:13

所有产生正确结果的方法都是正确的。舍入可能更容易处理,从较大的值减去较小的绝对值,并相应地调整符号位。而且,使用正数只会使在1<<23中处理(可选的)隐式数字稍微容易一些。对于负值,数字需要为0xff800000。其他一些特殊情况也会出现在负正态分布上。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66552267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档