Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Binary 如何转换2+;(2/7)至IEEE 754浮点_Binary_Ieee 754 - Fatal编程技术网

Binary 如何转换2+;(2/7)至IEEE 754浮点

Binary 如何转换2+;(2/7)至IEEE 754浮点,binary,ieee-754,Binary,Ieee 754,有人能给我解释一下将十进制格式的数字(如2+(2/7))转换为IEEE 754浮点表示的步骤吗?谢谢 首先,2+2/7不是大多数人所说的“十进制格式”。“十进制格式”更常用于表示以下数字: 2.285714285714285714285714285714285714285714... 即使是…也有点快和松。更常见的情况是,数字会被截断或四舍五入到某个小数位数: 2.2857142857142857 当然,在这一点上,它不再完全等于2+2/7,而是“足够接近”大多数用途 我们做了一些类似的事情

有人能给我解释一下将十进制格式的数字(如2+(2/7))转换为IEEE 754浮点表示的步骤吗?谢谢

首先,
2+2/7
不是大多数人所说的“十进制格式”。“十进制格式”更常用于表示以下数字:

2.285714285714285714285714285714285714285714...
即使是
也有点快和松。更常见的情况是,数字会被截断或四舍五入到某个小数位数:

2.2857142857142857
当然,在这一点上,它不再完全等于
2+2/7
,而是“足够接近”大多数用途

我们做了一些类似的事情,将一个数字转换成IEEE-754格式;我们先将数字写在基数2中,而不是以10为基数:

10.010010010010010010010010010010010010010010010010010010010010...
接下来,我们对数字进行“规范化”,将其以某种指数的形式写入
2^e*1.xxx…
(特别是数字前导位的数字位置):

在这一点上,我们必须选择一种特定的IEEE-754格式,因为我们需要知道需要保留多少位数。让我们选择“单精度”,它有24位有效位。我们将重复的二进制数舍入为24位:

2^1 * 1.00100100100100100100100  10010010010010010010010010010010010010...
           24 leading bits          bits to be rounded away
由于要舍入的尾随位大于
1000…
,因此该数字舍入为:

2^1 * 1.00100100100100100100101
现在,这个值实际上是如何以IEEE-754格式编码的?单精度格式有一个前导符号位(零,因为数字是正数),后跟八个二进制位,其中包含值
127+e
,后跟有效位的小数部分:

0 10000000 00100100100100100100101
s exponent fraction of significand

在十六进制中,这给出了
0x40124925

您是在询问汇编代码中的算术表达式计算器,还是什么?您的意思不仅仅是
2.0+(2.0/7.0)
?您想要在IEEE754中对这些数字进行二进制表示,并描述加法和除法是如何工作的,还是其他什么?
0 10000000 00100100100100100100101
s exponent fraction of significand