Floating point 大于1的最小反/规范化数是多少?(64位)

Floating point 大于1的最小反/规范化数是多少?(64位),floating-point,binary,floating-accuracy,ieee-754,denormalization,Floating Point,Binary,Floating Accuracy,Ieee 754,Denormalization,我正在为非规范化的数字绞尽脑汁 我知道: 本质上,非规范化浮点具有表示 可以用符号表示的最小(数量级)数字 任何浮点值 我也知道数字可以这样表示: 然而,我陷入困境的是去/规范化数字的实际计算 有没有办法做到这一点?有什么特别的号码吗 谢谢你的回答 “低于正常”是IEEE 754标准中使用的术语 没有大于1的次正常数;低于正常值的数字很小(比正常值小) 最小正态指数为-1022(编码为位0000000000 1,因为指数编码偏置1023)。低于正常值的数字具有较低的指数编码,编码为所有零位00

我正在为非规范化的数字绞尽脑汁

我知道:

本质上,非规范化浮点具有表示 可以用符号表示的最小(数量级)数字 任何浮点值

我也知道数字可以这样表示:

然而,我陷入困境的是去/规范化数字的实际计算

有没有办法做到这一点?有什么特别的号码吗


谢谢你的回答

“低于正常”是IEEE 754标准中使用的术语

没有大于1的次正常数;低于正常值的数字很小(比正常值小)

最小正态指数为-1022(编码为位0000000000 1,因为指数编码偏置1023)。低于正常值的数字具有较低的指数编码,编码为所有零位00000000000

低于正常值的数值是有效位(分数部分)乘以2-1022,并应用符号位(0表示正,1表示负)。有效位的形式为前导0,然后是基点“”,然后是有效位字段的位。因此,如果有效位字段包含0101010101010101010101010101010101010101010101010101010101010101,则有效位值为(二进制)0.01010101010101010101010101010101010101010101012


如果有效位字段完全为零,则该值为零,并且该数字通常不被视为低于正常值。最小的正次正常数的最低位为1,所有其他位为0。其值为0.00000000000000000000000000000000000000000012•2-1022,即2-52•2-1022=2-1074。

@user5414:符号位始终为0表示正,1表示负。我不知道历史。可能只是整数以这种方式增长(从0到某个数字,然后必须使用高位表示否定)。在浮点运算中,它通常通过将符号的贡献写入符号位幂的-1来表示,这将产生+1表示0和-1表示1。@user5414
1
在符号位中表示负数,因为它是这样定义的-可以将其视为表示存在“-”符号。。。可能与不使用符号表示正数的“正常”做法有关——我们通常不写“+42”,但符号通常表示负数。我不认为有任何重要的技术原因可以这样定义它,尽管…@user5414 IEEE浮点格式使用符号大小表示尾数,这意味着符号位是一个单独的实体(与通常是两个补码表示的整数不同)。所以符号位表示相同的东西,不管尾数的零/无限/正常/低于正常状态。因此,您实际上可以使用-0,它不是按位等效于+0(但它们比较起来是相等的)。@user5414在线搜索提供格式详细描述的文章或其他文档(以及提供比您所关心的更多细节的文档)应该相对容易。您也应该可以在线找到实际的标准…@user5414:在IEEE-754 64位二进制浮点中,低于正常值的数字都使用2**-1022。正态指数范围为-1022到1023。