2013-06-28 58 views
0

所以在24位浮点的背景下,我有以下问题:24位浮点指数

如果我想使用更多或更少位的指数来修改浮点。例如,我可能想要使用9位指数和15位尾数。如果我想要使用代表1728 和191744 的单个格式,多少指数位最合适?

对于1728 二进制代表。是11011000000,所以我的指数是138(10 + 128),所以我想用8位来表示指数138(10001010)?

回答

3

构建非标准浮点格式时,分配给指数或有效数的位数取决于您自己的需要。做什么为你服务。指数偏差也可以选择为您服务。除了数学和逻辑的要求之外,制定它时没有规则。

您显示的两个数字1728和191744需要在有效数字中有十个显式位(存储九个),因为191744开始于位1011101011 。指数(给定一个归一化为[1,2]的有效数)将是10和17,所以你需要能够在指数字段中编码八个值。但是,如果要为无穷大/ NaN保留一个指数编码,则需要九个值。所以你的指数需要四位。 (例如,你可以使用偏差为10的四位,这将是不寻常的,但并非不可能,所以0000表示指数10和0111 表示指数17.这将使1728成为次正态数)。因此, ,代表1728和191744需要一个符号位,四个指数位和九个有效位。这留下了十分之一的分配给你想要的任何方式。

自定义浮点格式通常仅用于存储,并且仅在内存使用至关重要时才有用。在任何具有浮点支持的硬件上,本地浮点格式比自定义格式的软件实现要快得多。所以通常最好在从存储器读取时将自定义格式转换为硬件支持的格式,以硬件格式执行所有计算(包括临时将中间值存储到存储器),并转换回之前的自定义格式以长期储存。


有效数字是优选的术语,而不是尾数。 Mantissas是对数(对数的小数部分),而有效数是线性的(浮点数的小数部分)。

0

您正在应用循环逻辑。指数10存储为10 + 128 BECAUSE 128 = 2^7,这是你的8位指数字段的一半。如果你使用了5位指数字段,你可以存储指数-16到+16,指数10将被存储为11010(26)。

+0

Ahhhhh,这很有道理,谢谢。 – user77708