前言
本文旨在为初学者提供有关计算机数字编码的基础知识,以帮助他们初步理解计算机中数字编码的概念。鉴于我个人知识的限制,如有不准确之处,欢迎指正并提供建议。
文中部分内容参考GPT,在此感谢ppword的大力支持。
三、计算机如何表示小数
1、定点法
定点数,其关键地方就在“定”和“点”这两个字上面,即在表示小数数据时,把小数点的位置已经约定好固定在某个位置,这是一个约定,二进制数据中并没有小数点的信息。
在定点数中,小数点可以将数据分为整数和小数部分,对于整数部分,我们已经知道怎么转成二进制来表示,但小数部分要怎么转换呢?
1.1、小数部分如何转二进制
我们先来看一个小数:5.375,它的整数部分转成二进制是:101,下面看小数据部分,小数部分用 * 2 计算的方法:
0.375 * 2 = 0.75 (此时整数部分为 0 ,记下0)
0.75 * 2 = 1.50 (此时整数部分为1,小数部0.5, 继续之前的操作)
0.5 * 2 = 1.0 (此时整数部分为1,此时小数部分为 0,结束)
然后把每一步的整数部分从上到下合起来,得到:011
如果遇到一直结束不了(就是不管*2多少次,小数部分一直存在)的时候,那就看你定点数中小数部分定了多少位,多出来的就不要了,当然这会损失一点精度。
我们现在知道0.375转成二进制是:011,那这个又要怎么转回去呢?就是对二进制的每一位做除2的n(位)次的操作,然后相加:
0 ∗ 2 − 1 + 1 ∗ 2 − 2 + 1 ∗ 2 − 3 = 0.375 0*2^{-1}+1*2^{-2}+1*2^{-3} = 0.375 0∗2−1