不到断气不罢休 发表于 2023-11-15 10:30:31

计算机数字编码入门篇(下)

前言

本文旨在为初学者提供有关计算机数字编码的基础知识,以帮助他们初步理解计算机中数字编码的概念。鉴于我个人知识的限制,如有不准确之处,欢迎指正并提供建议。
文中部分内容参考ChatGPT,在此感谢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(位)次的操作,然后相加:

\
知道怎么转换后,我们再来看下面的。
1.2、无符号定点数

无符号定点数,数值在机器中字长的全部二进制位中没有符号位,全都是数值位。
在这情况下,我们用8bit来存放5.375,并且约定小数点在中间,在这种情况下,我们可以将前4位用于整数部分,后4位用于小数部分,就得到它的二进制为:01010110
1.3、有符号定点数

有符号定点数,需要专门取一位数据位作为符号位,通常,符号位上的1表示负数,0表示正数,其余位为数值位。
2、浮点法

浮点数是一种数值表示方法,用于在计算机中表示实数(包括小数和整数)以及进行数学运算。浮点数的名称源于其表示方式,即小数点可以"浮动"或"移动",以适应不同的数值范围和精度要求。
我们先来看一组数据,0.666、6.66、66.6、666,他们都有一个共同的特点,就是可以用「科学计数法」来表示成:

\
浮点法和这个有点儿类似,那它究竟是怎么来表示数字的呢?
2.1、IEEE 754 浮点数计数标准

计算机中浮点数表示位如下形式(形式上与科学计数法有些类似)其中M表示尾数,E表示阶码

\
<ul>符号(S):0表示正数,1表示负数
阶码部分(E):表示小数点移动的位数。E>0表示向右移动,E
页: [1]
查看完整版本: 计算机数字编码入门篇(下)