现在有一个问题:
Question 1
有一组十进制非负小数需要存储:
0.00
0.12
3.57
1.83
而存储介质中,每个数据只能按3位的非负整数(0~999)存储,该怎么办?
一个简单易行的解决方法就是,将上述的数据都乘上100后再存储,即:
Answer 1
实际存储的数据为:
000, 对应 0.00
012, 对应 0.12
357, 对应 3.57
183, 对应 1.83
将数据从存储介质中读出来的时候,只需要除以100,就能得到原始的那组小数。
现在,让我们把问题修改那么一点点:
Question 2
有一组无符号二进制小数需要存储:
0.00b
0.10b
1.01b
1.11b
而存储介质中,每个数据只能按3bit的无符号整数存储,该怎么办?
仔细观察就能发现,与 Question 1 相比,Question 2 从十进制变为了二进制,从一组十进制的小数变为了一组二进制的小数,仅此而已。那么,我们可以套用 Question 1 的解决方法,将上述的数据都乘上4后再存储,即:
Answer 2
实际存储的数据为:
000, 对应 0.00b
010, 对应 0.10b
101, 对应 1.01b
111, 对应 1.11b
将数据从存储介质中读出来的时候,只需要除以4,就能得到原始的那组小数。
至此,机智的你应该已经发现了博主要讨论的东西了,没错,那就是"定点小数"。将前面的内容归纳、升华一下,可以给出"定点小数"的定义:
定点小数具有如下的特点:
那么,定点小数有什么用呢?其作用如下:
在硬件计算中,常常会遇到"计算单元只支持整数的加法和乘法运算"这样的情况。在这种情况下,要使用现有的计算单元完成小数的加法和乘法运算,我们可以采用定点小数的方案,简单而又有效。
用一句话将本论述归纳总结一下,那就是:
定点表示即约定机器数中的小数点位置是固定不变的。根据小数点固定的位置不同可以分为定点小数和定点整数。
本文链接:https://blog.csdn.net/qq_38791897/article/details/88766388
https://blog.csdn.net/starter_____/article/details/95235180?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
转载自:https://blog.csdn.net/qq_38791897