关于计算机存储浮点数的一个问题,咋理解呢
泻药
24bit的数字,如果作为整数,可以表示0~2^24-1,如果按23bit小数算,那么这些所有可能性在表示为小数时,应该除以2^23,也就是说乘以其倒数,用高精度计算出0b1.000……1(22个0)的十进制表示为1.00000011920928955078125,显然不止6位,或者说24bit的浮点至少是可以精确表示这个十进制有限小数的,虽然对于大部分有限小数并不能精确表示
【关于计算机存储浮点数的一个问题,咋理解呢】 实际上你这么想,二进制的浮点数是用有限位数存的,所以转换成十进制必然是一个有限小数,这个过程跟是否精确表示并无关系,书上或一般说的“精确表示”是指这样一个过程:
1 我们有一个普通的十进制有限小数,比如0.abcdefghijklmn
2 计算机将其转为二进制形式存储,比如用上面说的单精度,24bit有效数字,理论上是变成了0.ABCDEFGH.....................(无限循环小数),但是存储时候截断(我们假设是舍去法直接截断,即比实际值要小,而不同实现可能有不同做法,比如0舍1入)了,只保留24bit
3 将2中的这个截断后的24bit小数,精确转为十进制的数字,结果是0.opqrstuvwxyz
然后将1和3中的两个数字比较,除非2中能转为二进制有限小数,否则这俩数字肯定不同,不过对3的第X位做四舍五入之类的round,大致能保证前X位和1中1样,在单精度float下,保守一点,这个X差不多就是6的样子,精度概念这么理解会比较好,其实就是十进制-\u0026gt;二进制-\u0026gt;截断-\u0026gt;转回十进制这个过程中,最后结果和原始输入有多少位能大致对应上,不至于太离谱
至于题主框中的哪个证明法,感觉没什么道理,因为9虽然占4bit,但是并没有占满,4bit全1是15,所以长度足够大时并不是严格的4倍关系
推荐阅读
- 过节■江苏省委省政府办公厅下发关于做好2021年元旦春节期间有关工作的通知
- |徐州市出台《关于优化创新创业生态系统 提升区域科技创新活力的实施意见》及实施细则
- 雨下|全球关于禁售燃油车只是理论上可行吗
- 微博目前已经支持文本,图片,位置分享,为啥没有语音和视频呢微博的pm肯定想过这两种微博形态,但迟迟不做的原因到底是啥。是语音和视频不符合产
- 关于用phpfsocket 写Post, 模拟http 报文怎样写入要传输的处理数据
- 电商会怎样存储和保护客户的信用卡信息不被泄漏
- 大部分黑客或安全研究员读的是啥「大学专业 」
- 在哈尔滨工业大学计算机系就读是啥样的体验
- 计算机技术与科学专业怎样利用高中毕业的暑假
- 智叔|很多家长还在整箱买:谈谈关于牛奶的17个真相警惕这些列入黑名单的“假牛奶”
