关于计算机存储浮点数的一个问题,咋理解呢

泻药
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倍关系


    推荐阅读