那是人类存储的思维,但计算机的思维不一样,计算机就变成1.0*10^-2,存1.0和指数-2,明白了吗?如果是0.05就是5.0*10^-2,也就是整数部分必须大于0,这是计算机的规则(除非你发明另一种不按规则出牌的计算机)。 上面举的例子是10进制的,如果是2进制,只有0和1,按照整数大于0的规则就注定了整数只能是1,所以尾数的第一位肯定是1就是这么来的。
我要保存一个0.00 何来1?
[quote=引用 4 楼 oracleperl 的回复:] “浮点数存储格式” 举个例子? 我只知道浮点数float 32bits构成 ,如下: 符号(1 bit) 指数(8 bits) 尾数(23 bits) 实在不知道小数点在哪,也不知道指数(8 bits)是如何表示的,每一位分别啥意思
看了一些资料, 所有的浮点数,都是1.XXXXXX * 2的N次方的形式 而浮点数的小数位数,是指数的值决定的? =》不是,因为这是二进制形式,要转成10进制才知道小数位数 大致好像是这样,但是没完全看懂,好像有四种规则,位数的第一位肯定是1?这些我都不理解。 《深入理解计算机系统》的有关于这方面的说明,但是没有例子,文字也很难懂,看不懂。 =》尾数第一位是1,这是默认规则,因为不允许0.xxxx以0开头的小数的方式(类似于十进制的科学计数法,整数大于0小于10),因为二进制只有0和1,又因为规定第一位不能位0,所以第一位只能是1,为了省存储空间,就可以把第一位省略掉(因为第一位必然是1)
“浮点数存储格式” 举个例子? 我只知道浮点数float 32bits构成 ,如下: 符号(1 bit) 指数(8 bits) 尾数(23 bits) 实在不知道小数点在哪,也不知道指数(8 bits)是如何表示的,每一位分别啥意思
按照浮点数存储格式把数算出来就知道小数点在哪了
浮点数格式 http://bbs.csdn.net/topics/390676437
70,012
社区成员
243,257
社区内容
加载中
试试用AI创作助手写篇文章吧