Floating point 浮点数的有效位和指数是如何在内部表示的?

Floating point 浮点数的有效位和指数是如何在内部表示的?,floating-point,Floating Point,为了更好地理解浮点数是如何在内部表示的,我有一些疑问,也许你可以帮助我。所以,我主要研究IEEE 754规范,它说浮点数应该有: 1 bit for significand's sign 8 bits for exponent 23 bits for significand precision (I'm taking the Single-precision format here) 如您所见,它说1位是专门为有效位符号保留的,因此我认为有效位实际上是使用符号和幅值表示的,正确吗?(说真的,我

为了更好地理解浮点数是如何在内部表示的,我有一些疑问,也许你可以帮助我。所以,我主要研究IEEE 754规范,它说浮点数应该有:

1 bit for significand's sign
8 bits for exponent
23 bits for significand precision
(I'm taking the Single-precision format here)
如您所见,它说1位是专门为有效位符号保留的,因此我认为有效位实际上是使用符号和幅值表示的,正确吗?(说真的,我很难在网上找到这类信息)如果答案是肯定的,那么为什么选择符号和大小表示而不是两个补码?如果答案为否,那么为什么为符号保留1位

关于指数,我对它的代表性也有一些疑问。我在book/wiki上读到指数是一个用偏差编码的无符号数字。但是,显然指数必须同时表示正数和负数,因此我的问题是:指数可以根据应用程序进行不同的解释?例如,如果我需要将指数用作两个补码,如果它是无符号数,我该如何做


非常感谢你!我有点迷路了,如果你能给我一个完整的解释,我将不胜感激

通常应避免直接操作IEEE二进制浮点数的内部结构。您的编程语言和库通常负责转换和格式化输出。大多数计算机都有硬件算法

我只想针对你们的具体问题作一个提纲。维基百科有一篇文章,很好地涵盖了这个主题,有图表和例子

数字确实是以符号和大小的形式存储的

对于正常数字,实际有效位的最高有效位必须为1,因此不存储


指数被存储为实际指数和确保非负位模式的偏置127的总和。这个系统的好处是更简单地比较浮点数。两种极端指数位模式,0和所有位都是特殊处理的。

通常应避免直接操作IEEE二进制浮点数的内部。您的编程语言和库通常负责转换和格式化输出。大多数计算机都有硬件算法

我只想针对你们的具体问题作一个提纲。维基百科有一篇文章,很好地涵盖了这个主题,有图表和例子

数字确实是以符号和大小的形式存储的

对于正常数字,实际有效位的最高有效位必须为1,因此不存储


指数被存储为实际指数和确保非负位模式的偏置127的总和。这个系统的好处是更简单地比较浮点数。两种极端指数位模式,0和所有位都是特殊处理的。

通常应避免直接操作IEEE二进制浮点数的内部。您的编程语言和库通常负责转换和格式化输出。大多数计算机都有硬件算法

我只想针对你们的具体问题作一个提纲。维基百科有一篇文章,很好地涵盖了这个主题,有图表和例子

数字确实是以符号和大小的形式存储的

对于正常数字,实际有效位的最高有效位必须为1,因此不存储


指数被存储为实际指数和确保非负位模式的偏置127的总和。这个系统的好处是更简单地比较浮点数。两种极端指数位模式,0和所有位都是特殊处理的。

通常应避免直接操作IEEE二进制浮点数的内部。您的编程语言和库通常负责转换和格式化输出。大多数计算机都有硬件算法

我只想针对你们的具体问题作一个提纲。维基百科有一篇文章,很好地涵盖了这个主题,有图表和例子

数字确实是以符号和大小的形式存储的

对于正常数字,实际有效位的最高有效位必须为1,因此不存储

指数被存储为实际指数和确保非负位模式的偏置127的总和。这个系统的好处是更简单地比较浮点数。特别处理了两种极端指数位模式0和all位on

  • 是的,它是符号和大小的表示。但是,在内部,处理器可能会在2的补码表示中对尾数进行编码。例如:

    --对于减法,其中一个尾数必须编码在-ve中,实际上处理器选择指数值最低的尾数,因此尾数部分的补码减法是2

    --对于加法和乘法,不需要内部2的补码,但实际上加法的尾数是正2的补码表示

  • 如果您使用的是std,请选择任何x86机器。不,指数总是用无符号表示法(2^(n-1)-1)表示,其中
    n
    是指数部分的宽度。对于单精度,<代码> n=8 < /代码>,因此偏置<代码> 2(n-1)- 1=127 < /C++ >,只需执行此操作,并将其存储在签名的变量中,例如C、C++中的“代码> int <代码> >

  • 。 了解
     .....