首页 > 其他分享 >计组笔记: 第二章 数据的表示与运算

计组笔记: 第二章 数据的表示与运算

时间:2023-04-22 17:44:20浏览次数:50  
标签:表示 计组 二进制 浮点数 笔记 尾数 定点数 第二章 运算

第二章 数据的表示与运算

https://i.cnblogs.com/posts/edit;postId=-1;templateId=811
在这里插入图片描述

【复习提示】

本章内容较为繁杂,由于计算机中数的表示和运算方法与人们日常生活中的表示和运算方法不同,因此理解也较为困难。纵观近几年的真题,不难发现 unsigned、shot、int、long、foat、 double等在C语言中的表示、运算、溢出判断、隐式类型转换、强制类型转换、IEEE754浮点数的表示,以及浮点数的运算,都是考研考查的重点,需要牢固掌握。

在学习本章时,请读者思考以下问题:

  • 1)在计算机中,为什么要采用二进制来表示数据?
  • 2)计算机在字长足够的情况下能够精确地表示每个数吗?若不能,请举例说明。
  • 3)字长相同的情况下,浮点数和定点数的表示范围与精度有什么区别?
  • 4)用移码表示浮点数的阶码有什么好处?

请读者在本章的学习过程中寻找答案,本章末尾会给出参考答案。

2.1 数制与编码

还是要系统学习一下,不然之前的0x1010还查了好久!

2.1.1 进位计数制及其相互转化

知识点回顾与重点考点(如果知道了,就不用看了)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 四级网络工程师考试,就用这个方法,妙!
    在这里插入图片描述

知识回顾与重点考点

在这里插入图片描述

2.1.2 BCD码(Binary-Code Decimal码)

注意:这是为了表示0和9,所以1010~1111都是违法的,以前都没在意!
在这里插入图片描述
在这里插入图片描述

知识回顾与重要考点

在这里插入图片描述

2.1.4 字符与字符串

在这里插入图片描述

1.字符编码ASCII码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

字符串

在这里插入图片描述
在这里插入图片描述

知识回顾与重要考点

在这里插入图片描述

2.1.5 校验码

在这里插入图片描述

任意两个码字之间最少变化的二进制位数称为码距,码距大于等于2的数据校验码开始具有检错的能力。码距越大,检错、纠错能力越强。奇偶校验码的码距等于2,可以检测出一位错误(或奇数位错误),但不能确定出错的位置,也不能检测出偶数位错误;海明码的码距大于2,因此不仅可以发现错误,还能指出错误的位置。仅靠增加奇偶校验位的位数不能提高正确性,还要考虑码距。

具有检、纠错能力的数据校验码的实现原理:在编码中,除合法码字外,再加入一些非法码字,当某个合法码字出现错误时,就变为非法码字。合理安排非法码字的数量和编码规则就能达到纠错的目的。

1.奇偶校验码

原编码上加一个校验位,码距等于2!
在这里插入图片描述
在这里插入图片描述
知识回顾与重要考点

在这里插入图片描述

2.海明(汉明)校验码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 循环冗余校验(CRC)码

终于知道了《UVM实战》中的CRC校验是什么回事了!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

CRC校验码是可以纠错的,前面这个是因为信息位太长

在这里插入图片描述
在这里插入图片描述

2.2 定点数的表示和运算

2.3 浮点数的表示与运算

2.4 算数逻辑单元(ALU)

2.5 本章开头提出的问题回答

1)在计算机中,为什么要采用二进制来表示数据?

  • 1)在计算机中,为什么要采用二进制来表示数据?

    从可行性来说,采用二进制,只有0和1两个状态,能够表示0、1两种状态的电子器件很多,如开关的接通和断开、晶体管的导通和截止、磁元件的正负剩磁、电位电平的高与低等,都可表示0、1两个数码。使用二进制,电子器件具有实现的可行性。
    从运算的简易性来说,二进制数的运算法则少,运算简单,使计算机运算器的硬件结构大大简化(十进制的乘法九九口诀表有55条公式,而二进制乘法只有4条规则)从逻辑上来说,由于二进制0和1正好和逻辑代数的假( false)和真(true)相对应,有逻辑代数的理论基础,用二进制表示二值逻辑很自然。

2)计算机在字长足够的情况下能够精确地表示每个数吗?若不能,请举例说明。

  • 2)计算机在字长足够的情况下能够精确地表示每个数吗?若不能,请举例说明。

    计算机采用二进制来表示数据,在字长足够时,可以表示任何一个整数。而二进制表示小数时只能够用1(2)的和的任意组合表示,即使字长很长,也不可能精确表示出所有小数,只能无限逼近。例如0.1就无法用二进制精确地表示。

3)字长相同的情况下,浮点数和定点数的表示范围与精度有什么区别?

  • 3)字长相同的情况下,浮点数和定点数的表示范围与精度有什么区别?

    字长相同时,浮点数取字长的一部分作为阶码,所以表示范围比定点数要大,而取一部分作为阶码也就代表着尾数部位的有效位数减少,而定点数字长的全部位都用来表示数值本身,精度要比同字长的浮点数更大。

4)用移码表示浮点数的阶码有什么好处?

  • 4)用移码表示浮点数的阶码有什么好处?

    移码的两个好处
    ①浮点数进行加减运算时,时常要比较阶码的大小,相对于原码和补码,移码比较大小更方便。
    ②检验移码的特殊值(0和max)时比较容易。阶码以移码编码时的特殊值如下。0:表示指数为负无穷大,相当于分数分母无穷大,整个数无穷接近0,在尾数也为0时可用来表示0:尾数不为零表示未正规化的数。max:表示指数正无穷大,若尾数为0,则表示浮点数超出表示范围(正负无穷大);尾数不为0,则表示浮点数运算错误

2.6 常见问题

1.如何表示一个数值数据?计算机中的数値数据都是二进制数吗?

  • 1.如何表示一个数值数据?计算机中的数値数据都是二进制数吗?

    在计算机内部,数值数据的表示方法有以下两大类。
    ①直接用二进制数表示。分为无符号数和有符号数,有符号数又分为定点数表示和浮点数表示。无符号数用来表示无符号整数(如地址等信息);定点数用来表示整数;浮点数用来表示实数。
    ②二进制编码的十进制数,一般都采用8421码(也称NBCD码)来表示,用来表示整数。
    所以,计算机中的数值数据虽然都用二进制来编码表示,但不全是二进制数,也有用十进制数表示的。后面一章有关指令类型的内容中,就有对应的二进制加法指令和十进制加法指令。

2.在高级语言编程中所定义的 unsigned/short/int/long/float/double型数据是怎么表示的?什么称为无符号整数的“溢出”?

  • 2.在高级语言编程中所定义的 unsigned/short/int/long/float/double型数据是怎么表示的?什么称为无符号整数的“溢出”?

    unsigned型数据就是无符号整数,不考虑符号位。直接用全部二进制位对数值进行编码得到的就是无符号数,一般都用补码表示。

    int型数据就是定点整数,一般用补码表示。int型数据的位数与运行平台和编译器有关,一般是32位或16位。例如,真值是-12的int型整数,在机器内存储的机器数(假定用32位寄存器寄存)是1111-1111-1111-1111-1111-1111-1111-0100.

    long型数据和short型数据也都是定点整数,只是位数不同,分别是长整型和短整型数,通常用补码表示。

    float型数据是用来表示实数的浮点数。现代计算机用IEEE754标准表示浮点数,其中32位单精度浮点数就是float型,64位双精度浮点数就是 double型。

    需要注意的是,C语言中的int型和 unsigned型变量的存储方式没有区别,都按照补码的形式存储,在不溢出范围内的加减法运算也是相同的,只是int型变量的最高位代表符号位,而unsigned型中的最高位表示数值位,两者在C语言中的区别体现在输出时到底是采用%d还是采用%u。

    对于无符号定点整数来说,若寄存器位数不够,则计算机运算过程中一般保留低n位,舍弃高位。这样,会产生以下两种结果。
    ①保留的低n位数不能正确表示运算结果。在这种情况下,意味着运算的结果超出了计算机所能表达的范围,有效数值进到了第n+1位,称此时发生了“溢出”现象
    ②保留的低n位数能正确表达计算结果,即高位的舍去并不影响其运算结果。

3.如何判断一个浮点数是否是规格化数?

  • 3.如何判断一个浮点数是否是规格化数?

    为了使浮点数能尽量多地表示有效位数,一般要求运算结果用规格化数形式表示。“规格化浮点数的尾数小数点后的第一位一定是个非零数。因此,对于原码编码的尾数来说,只要看尾数的第一位是否为1就行:对于补码表示的尾数,只要看符号位和尾数最高位是否相反。需要注意的是,IEEE754标准的浮点数尾数是用原码编码的。

4.对于位数相同的定点数和浮点数,可表示的浮点数个数比定点数个数多吗?

  • 4.对于位数相同的定点数和浮点数,可表示的浮点数个数比定点数个数多吗?

    不是,可表示的数据个数取决于编码所采用的位数。编码位数一定,编码出来的数据个数就是一定的。m位编码只能表示2m个数,所以对于相同位数的定点数和浮点数来说,可表示的数据个数应该一样多(有时可能由于一个值有两个或多个编码对应,编码个数会有少量差异)。

5.浮点数如何进行舍入?

  • 5.浮点数如何进行舍入?

    舍入方法选择的原则是:①尽量使误差范围对称,使得平均误差为0,即有舍有入,以防误差积累。②方法要简单,以加快速度。
    IEEE754有4种舍入方式。
    ①就近舍入:舍入为最近可表示的数,若结果值正好落在两个可表示数的中间,则一般选择舍入结果为偶数。
    ②正向舍入:朝+∞方向舍入,即取右边的那个数
    ③负向舍入:朝-∞方向舍入,即取左边的那个数。
    ④截去:朝0方向舍入,即取绝对值较小的那个数

6.现代计算机中是否要考虑原码加减运算?如何实现?

  • 6.现代计算机中是否要考虑原码加减运算?如何实现?

    因为现代计算机中浮点数采用IEEE754标准,所以在进行两个浮点数的加减运算时,必须考虑原码的加减运算,因为IEEE754规定浮点数的尾数都用原码表示。
    原码的加减运算可以有以下两种实现方式
    1)转换为补码后,用补码加减法实现,结果再转换为原码。
    2)直接用原码进行加减运算,符号和数值部分分开进行(具体过程见原码加减运算部分)。

7.长度为n+1的定点数,按照不同的编码方式,表示的数值范围是多少?

  • 7.长度为n+1的定点数,按照不同的编码方式,表示的数值范围是多少?

    各编码方式的数值范围见表2.8
    在这里插入图片描述

8.设阶码和尾数均用补码表示,阶码部分共K+1位(含1位阶符),尾数部分共n+1位(含1位数符),则这样的浮点数的表示范围是多少?

  • 8.设阶码和尾数均用补码表示,阶码部分共K+1位(含1位阶符),尾数部分共n+1位(含1位数符),则这样的浮点数的表示范围是多少?

    浮点数的表示范围见表2.9。
    在这里插入图片描述

标签:表示,计组,二进制,浮点数,笔记,尾数,定点数,第二章,运算
From: https://www.cnblogs.com/yimumengke/p/17343578.html

相关文章

  • 【OMNET++网络仿真系列学习笔记-1】Ubuntu 22.04版本安装OMNET++6.0版本及各类报错合
    本章目录前言第一步:下载6.0压缩包第二步:解压并安装第三步:启动环境变量第四步:遇到的问题第五步:./configure编译结束第六步:验证安装是否可以正常运行?第七步:验证IDE总结:写在后面的话前言本篇文章记录了22.04版本Ubuntu安装OMNET++6.0版本及各类报错合集解决方案,途中遇到了无数问题,很......
  • (2023)Admob广告实践笔记
    开屏官方最佳实践最好等到您的用户使用您的应用几次后,再展示您的第一个应用打开广告。在您的用户等待您的应用加载的时间展示应用打开广告。如果您在应用打开广告下方有一个加载屏幕,并且您的加载屏幕在广告关闭之前完成加载,您可能需要在adDidDismissFullScreenContent方法中......
  • 左偏树学习笔记
    一、前言左偏树是一种可以在\(O(\logn)\)内快速合并的堆式数据结构。具体来说,插入一个元素:\(O(\logn)\)。查询最值:\(O(1)\)。删除最值:\(O(\logn)\)。合并:\(O(\logn)\)。减少一个元素的值:\(O(\logn)\)。同时它可以持久化。二、定义外节点:左儿子或者右儿子为空的......
  • 计组笔记:
    第一章计算机系统概述取自加以个人理解:https://blog.csdn.net/haojie_duan/article/details/112739522【复习提示】本章是组成原理的概述,考查时易针对有关概念或性能指标出选择题,也可能综合后续章节的内容出有关性能分析的综合题。掌握本章的基本概念,是学好后续章节的基础......
  • Python基础—conda使用笔记
    Python基础—conda使用笔记1.环境配置由于用conda管理虚拟环境真滴很方便,所以主要使用conda,就不单独去装Python了。1.1.Miniconda3安装Miniconda3官网下载地址:MinicondaMiniconda3清华镜像下载:清华镜像-Miniconda对于Windows系统:Miniconda安装跟正常的软件安装是一样......
  • Meerkat 2021 pulsar timing workshop 学习笔记(一)
    Thejoyofpulsars,byProfMatthewBaile,SwinburneUniversityofTechnologyhttps://www.youtube.com/watch?v=qG_hMzTCEX4&t=988s笔记不保证正确性(英语不行),最好观看原视频 1.引力天才们伽利略,第一个把望远镜指向天空的人,发现了木星有卫星开普勒,为行星绕太阳绕选给出了严......
  • 51单片机学习笔记 STC89CRC (04)数码管和锁存器
    一、数码管 点亮:共阴极给高电平,共阳级给低电平,二进制点亮顺序为  dpgfedcba想要显示1,就可以给0x06, //00000110,bc亮起显示1.0x3F,//"0"0x06,//"1"0x5B,//"2"0x4F,//"3"0x66,//"4"0x6D,//"5"......
  • 图论笔记
    图的概念图:点--边度->有向图(入度,出度)||无向图(度)自环:若一条边的两个顶点为同一顶点,则此边称作自环。路径:从任何一个点出发,随意在图上走,走出来的序列叫路径。|简单路径(一条路径,每个点最多只能走一次) 特殊的图1)没有环的无向图:树-->无向,连通,无环  ||n个点n-1条边只有......
  • mysql学习笔记2023年3月10日
    navicat 用法 ①创建数据库  ②创建数据表 外键  ③新建查询  ④转储SQL文件(执行的就是mysqldump命令) ⑤执行SQL文件前,需要先创建数据库临时表 (select*fromtb1)asB;  临时表表名为B select sidfromB; ......
  • 安装centos stream 8的笔记
    一、安装下载centosstream8的iso文件:https://mirrors.tuna.tsinghua.edu.cn/centos/8-stream/isos/x86_64/安装过程与之前的centos类似,我这里进行的是在vmwareworkstation16.1中安装。文件系统配置建议/boot512MB占sda1,LVM管理/和swap,创建sda2作为物理卷,vg00作为卷组,s......