浮点输出长度(以位为单位)

时间:2013-11-16 15:11:08

标签: electronics

虽然很简单,但我无法通过谷歌搜索找到它。我们知道浮点表示支持更大范围的数字,并且操作比纯整数慢。我们也知道如何使用尾数和指数来表示浮点。但我的问题是,比如说,在一个32位系统中,s * b ^ e输出是否超过32位或32位? (其中s =有效数,b =基数,e =指数)

1 个答案:

答案 0 :(得分:0)

用于表示尾数的精确位数和浮点数的指数因CPU而异,因此问题肯定取决于架构。

有一个非常显性的标准:IEEE Floating Point,根据this related SO question,您今天可能遇到的所有主要CPU都会实现它,包括IA32。

根据维基百科,IEEE浮点要求在任何实施中至少有以下一项可用:

  • binary32:24位尾数(包括1个符号位)和8位指数
  • binary64:53位尾数(包括1个符号位)和11位指数

假设32位是指IA 32 family(这只是少数使用32位的架构之一),那么浮点寄存器can contain up to 80 bits,意思是,binary32,binary64和a可以支持具有15个指数位的非IEC 80位格式。为区分32位和64位指令,大多数汇编程序使用QWORDDWORD等大小修饰符。

此外,除了CPU实现,语言还需要符合IEEE浮点。例如,在C语言中,附件7规定如果编译器自动定义宏__STDC_IEC_599__,则float保证为binary32和double binary64。 long double不固定为IEC,因此它可以在IA32拱门上使用80位。