Floating point 英特尔:计算浮点数

Floating point 英特尔:计算浮点数,floating-point,intel,i386,Floating Point,Intel,I386,我正在阅读“C语言中的数字配方——科学计算的艺术”,在第一章中有一节讨论了浮点数是如何从某种程度上与体系结构无关的角度来表示的。这篇文章涉及英特尔处理器i386系列,以及浮点数在该体系结构中的表示方式。我的问题专门针对如何计算有偏指数以及如何表示尾数。前一个是否存储在尾数中 在“科学计算艺术中的数字配方”中,我得到了以下公式: s X M X B^(e-e):s是表示符号的单个位,M是尾数,B是基数(基数2),e是指数,e是指数的偏差 e是存储在2的补码中,还是一个无符号8位字段 E是偏差。偏差

我正在阅读“C语言中的数字配方——科学计算的艺术”,在第一章中有一节讨论了浮点数是如何从某种程度上与体系结构无关的角度来表示的。这篇文章涉及英特尔处理器i386系列,以及浮点数在该体系结构中的表示方式。我的问题专门针对如何计算有偏指数以及如何表示尾数。前一个是否存储在尾数中

在“科学计算艺术中的数字配方”中,我得到了以下公式:

s X M X B^(e-e):s是表示符号的单个位,M是尾数,B是基数(基数2),e是指数,e是指数的偏差

  • e是存储在2的补码中,还是一个无符号8位字段
  • E是偏差。偏差是127吗
  • 尾数是读作1.00000(2)还是读作.0000000(2)?其中(2)是基2

  • 是的-包括64位在内的所有intel 86系列都支持IEEE 754浮点标准

    来源:

    要回答IEEE 754-其工作原理,请参见:

  • e是一个无符号8位字段。偏差(E)是用来表示正指数和负指数的。在进行实际计算时,这是一个比2的补充稍微理智一些的表示,即使考虑起来有点尴尬

  • 偏差的大小取决于浮点类型。对于标准IEEE浮点,它是127。对于一个标准的IEEE double,它是1023

  • 不知道你的意思。对于标准float和double类型,正常数的尾数前有一个隐含的1位,低于正常数的尾数前没有。如果IEEE浮点的二进制表示形式(符号、指数、尾数)为
    0 01111111 01110111101110111101101101101101101101101111
    ,则可以将其理解为
    (-1)^0*2^(011111111b)*1.01110111101110b
    注意尾数前的前导
    1.

  • 当指数尽可能小(零)时,则表示数值低于正常值。当指数尽可能大(都是1)时,就有无穷大和N。尾数在这里的意思不同。所有其他指数代表“正常数”


    对于Intel的80位
    长双精度
    类型,没有隐含的1位(它存储在尾数的高位),我记不起当您尝试使用具有正常表示的
    长双精度
    进行算术时会发生什么,但隐含位已关闭。我认为他们这样做是为了让x87更容易构建。

    这不是你的错,但英特尔的链接现在断了。我在两台使用Safari和Chrome的机器上进行了尝试,curl和wget,但都不起作用。我尝试了英特尔公司VPN的开关。什么都不管用。我不明白它是如何为你工作的。好吧,对我来说,它现在看起来也坏了。它返回一个英特尔站点。我没有保存任何内容。我会努力找到内容。这是一个列表;他们有什么样的信息。他们删除了我链接到的原件。(支撑)注意尾部支撑-无法正确显示链接。