首页 > 其他分享 >计算机数字编码入门篇(下)

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

时间:2023-10-20 18:01:54浏览次数:58  
标签:表示 计算机 二进制 浮点数 数字编码 入门篇 定点数 部分 小数

前言

本文旨在为初学者提供有关计算机数字编码的基础知识,以帮助他们初步理解计算机中数字编码的概念。鉴于我个人知识的限制,如有不准确之处,欢迎指正并提供建议。

文中部分内容参考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(位)次的操作,然后相加:

\[0*2^{-1}+1*2^{-2}+1*2^{-3} = 0.375 \]

知道怎么转换后,我们再来看下面的。

1.2、无符号定点数

无符号定点数,数值在机器中字长的全部二进制位中没有符号位,全都是数值位。

在这情况下,我们用8bit来存放5.375,并且约定小数点在中间,在这种情况下,我们可以将前4位用于整数部分,后4位用于小数部分,就得到它的二进制为:01010110

1.3、有符号定点数

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

2、浮点法

浮点数是一种数值表示方法,用于在计算机中表示实数(包括小数和整数)以及进行数学运算。浮点数的名称源于其表示方式,即小数点可以"浮动"或"移动",以适应不同的数值范围和精度要求。

我们先来看一组数据,0.666、6.66、66.6、666,他们都有一个共同的特点,就是可以用「科学计数法」来表示成:

\[6.66*10^n,n依次为-1,0,1,2 \]

浮点法和这个有点儿类似,那它究竟是怎么来表示数字的呢?

2.1、IEEE 754 浮点数计数标准

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

\[V=(-1)^S*1.M...*2^E \]

  • 符号(S):0表示正数,1表示负数
  • 阶码部分(E):表示小数点移动的位数。E>0表示向右移动,E<0表示向左移动。
  • 尾数部分(M):是浮点数的二进制表示。需要注意的是这里尾数部分,如果不是1.M...这种格式,需要做一个简单处理。

这看着有点迷糊,既然有公式,那我们就按上面的来套一下,就是把我们要转换的值,转成二进制后,再转成公式里的样子,方便起见,还是用5.375来说明。

  • 1.M...:这就是一种格式,如:1.1001、1.00110等,小数点前面的必定是1,因为我们现在是二进制嘛,要是0的话你就把小数点往后移移,总能找到是1的时候
  • 把5.375转成二进制后为:101.011
  • 符号位:这是个正数,结合上面的公式,那可以肯定S=0
  • 阶码(E):对于1.M...的形式,101.011=1.01001*2^2,所以E=127+2,用二进制表示为:10000001

这里为何要加上127呢?等会再看“阶码偏置”

  • 尾数:1.01011的尾数部分就是01011

2.2、阶码偏置

指数偏移值(exponent bias),是指浮点数表示法中的指数域的编码值为指数的实际值加上某个固定的值,IEEE 754标准规定该固定值为:

\[2^{e-1}-1 \]

其中的 为存储指数的比特的长度。

采用指数的实际值加上固定的偏移值的办法表示浮点数的指数,好处是可以用长度为 个比特的无符号整数来表示所有的指数取值,这使得两个浮点数的指数大小的比较更为容易,实际上可以按照字典序比较两个浮点表示的大小。

2.3、用float来表示完整二进制

单精度float一共32位,最高位用来表示符号位,中间的8位用来表示阶码,其它23位用来表示尾数部分:

符号位(S) 阶码部分(E) 尾数部分(M)
1位 8位 23位

按这个定义,5.375表示出来应该是:

符号位(S) 阶码部分(E) 尾数部分(M)
0 10000001 01011000000000000000000

尾数据部分不够23位的,后面补0就是了。

同样的,双精度double一共64位:

符号位(S) 阶码部分(E) 尾数部分(M)
1位 11位 52位

2.4、验证

现在我们已经把5.375转成了二进制形式,就是:01000000101011000000000000000000,我突然想到是不是可以用chatgpt来验证一下结果,于是我就去试了一下,
image
真是忏愧,还是gpt4比较好,说的比我好多了。

3、最后

定点数和浮点数都可以表示小数,而定点数的精度固定,表现范围比较有限;但是,定点数在硬件上比较容易去实现,在实际的数据算法中,定点数运算效率比浮点数的运算效率有大大的提高,同时也降低了数据存储资源。因此,定点数会被广泛的应用到数字信号处理的各种应用场景中。

标签:表示,计算机,二进制,浮点数,数字编码,入门篇,定点数,部分,小数
From: https://www.cnblogs.com/ppword/p/17777681.html

相关文章

  • 计算机字符编码入门篇
    前言本文旨在为初学者提供有关计算机字符编码的基础知识,以帮助他们初步理解计算机中字符编码的概念。鉴于我个人知识的限制,如有不准确之处,欢迎指正并提供建议。文中部分内容参考ChatGPT,在此感谢ppword的大力支持。一、什么是二进制二进制是一种数字表示系统,它只使用两个数字......
  • 计算机数字编码入门篇(上)
    前言本文旨在为初学者提供有关计算机数字编码的基础知识,以帮助他们初步理解计算机中数字编码的概念。鉴于我个人知识的限制,如有不准确之处,欢迎指正并提供建议。文中部分内容参考ChatGPT,在此感谢ppword的大力支持。一、无符号整数计算机使用不同的编码方式来表示无符号整数,最......
  • 软件测试|计算机科学与工程学院举行火焰杯颁奖仪式
    11月25日下午,在S楼会议室举行了"火焰杯"软件测试开发选拔赛和三江-慧科卓越工程师班暑期编程能力训练营的颁奖仪式。仪式的重要参与者包括计算机科学与工程学院的领导,刘亚军院长、叶传标副院长、曹阳副院长、吴德副院长、以及院党总支的副书记王兰英、系主任杨少雄,慧科企业代......
  • 软件测试|计算机系本科生获“火焰杯”软件测试高校就业选拔赛一等奖
    2022年12月2日,计算机系党总支书记、副系主任王琦副教授在工学院南楼551会议室为19级徐驰同学颁发第二届“火焰杯”软件测试开发选拔赛一等奖奖项,为刘烨庞助理教授颁发赛事优秀指导老师奖项。徐驰同学于2022年4月获得该赛事全国总决赛第一名,由于疫情原因,组委会未能线......
  • 计算机语言的 堆内存 和栈内存有什么区别???
    在C语言中,堆内存和栈内存是两种不同的内存分配方式,它们有以下区别:.分配方式:栈内存:由编译器自动分配和释放,堆内存:需要手动分配和释放。.分配速度:栈内存:分配速度比堆内存快,因为它只需要移动栈指针即可,堆内存:分配需要在堆中搜索可用的空间。.内存管理:栈......
  • 揭秘计算机的神经系统:探索计算机的基本组成
    计算机的基本硬件组成CPU被比喻为人类大脑,其作用是指挥和控制人体的各项功能。而内存和硬盘则相当于大脑中的记忆板块,用于记录和存储信息。主板则类似于人的神经系统,起到连接和协调人体各个部分的作用。显卡则类似于人的眼睛,负责显示图像和视频。而计算机的电源则类似于人的心脏......
  • 2023-2024-1 20231312 《计算机与程序设计》第四周学习总结
    作业信息这个作业属于哪个课程<班级的链接>2023-2024-1-计算机基础与程序设计|-这个作业要求在哪里<作业要求链接>2023-2024-1计算机基础与程序设计第四周作业|这个作业的目标《计算机基础概论》第4,5章《C语言程序设计》第3章|作业正文作业链接教材学......
  • 标题:计算机音视频技术的发展与应用
    引言:随着科技的不断进步,计算机音视频技术在我们的日常生活中扮演着越来越重要的角色。从传统的音频和视频播放器到如今的流媒体服务和虚拟现实技术,计算机音视频技术已经取得了巨大的发展。本文将介绍计算机音视频技术的历史演变,并探讨其在各个领域的应用。一、历史演变:1.音频技术......
  • 计算机基础
    一、计算机基础在学习Python之前我们先来学习下基础知识,有助于我们理解。1.什么是计算机?​ 非常简单的理解就是我们知道的笔记本电脑和台式电脑,当然还有我们不是经常知道的服务器,专门做计算用的等,目前我们知道就是我们常用的电脑就行。2.计算机主要的组成​ 计算机主要由硬......
  • 计算机基础知识记录(1)
    十进制转换二进制:(要注意正数和小数的区别)正数:数字除以2然后继续将商除以2,将余数按照逆序排列即可得到二进制数;例如:28转换为2进制数,28÷2=14,余0;14÷2=7,余0;7÷2=3,余1;3÷2=1,余1;1÷2=0,余1。最后,逆序排列余数即可得到28的二进制表示,即11100。小数部分:乘以2取正数部分,再按......