我和朋友正在讨论今天午餐时Inf和NaN的存储方式.
以Fortran 90为例.4字节实数可以获得Inf或NaN的值.这是如何在内部存储的?据推测,4字节实数是由32位二进制数内部表示的数字.Inf和NaN是否存储为33位二进制数?
And*_*ula 21
特别是从Pesto的链接:
IEEE单精度浮点标准表示需要32位字,其可以表示为从左到右编号为0到31.第一位是符号位,S接下来的8位是指数位' E',最后23位是分数' F':
S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF 0 1 8 9 31
该V单词表示的值可以确定如下:
E=255且F非零,那么V=NaN("不是数字") E=255和F是零和S的1,然后V=-Infinity E=255和F是零和S的0,然后V=Infinity 0<E<255那时V=(-1)**S * 2 ** (E-127) * (1.F)" 1.F"意图表示通过在F前面加上隐式前导1和二进制点而创建的二进制数. E=0和F非零,则V=(-1)**S * 2 ** (-126) * (0.F)这些是"非标准化"值. E=0和F是零和S的1,然后V=-0 E=0和F是零和S的0,然后V=0