halo~我是bay_Tong桐小白
本文内容是桐小白个人对所学知识进行的总结和分享,知识点会不定期进行编辑更新和完善,了解最近更新内容可参看更新日志,欢迎各位大神留言、指点
数据的表示和运算器总结——基本知识要点汇总
【更新日志】
最近更新:
- 更新内容——更新溢出的概念及判别方法(2021.1.1)
计算机统考408考纲要求
2021计算机统考408考纲计算机组成原理学科考察目标
- 理解单处理器计算机系统中各部件的内部工作原理、组成结果以及相互连接方式,具有完整的计算机系统的整机概念
- 理解计算机系统层次化结构概念,熟悉硬件与软件之间的界面,掌握指令集体系结构的基本知识和基本实现方法
- 能够综合运用计算机组成的基本原理和基本方法,对有关计算机硬件系统中的理论和实际问题进行计算、分析,对一些基本部件进行简单设计,并能对高级程序设计语言(如C语言)中的相关问题进行分析
2021计算机统考408计算机组成原理考纲变动情况
2021计算机统考408考纲对数据的表示和运算器部分考察要求
数制与编码
进位计数制及其相互转换
常用进位计数制:十进制、二进制、八进制、十六进制
进制相互转换:
-
R进制转换为十进制——权位相加
-
十进制转换为R进制——短除逆序取余
十进制纯小数的R进制转换——乘R取积整数部分
-
二进制与十六进制转换——直接转换
-
二进制与八进制转换——直接转换
整数部分从小数点向左,根据要转化的进制分组(如八进制3位一组,十六进制4位一组,不够在最左补0)
小数部分从小数点向右,根据要转化的进制分组(如八进制3位一组,十六进制4位一组,不够在最右补0)
真值和机器数
- 现实世界中的信息可以分为2大类:数值与非数值
- 机器数:数值要按照某种规则进行编码后在计算机中存储,这种存储在计算机中的编码被称为机器数。三种常见的机器数:原码、反码、补码
- 真值:机器数对应的实际数值被称为真值。同一个真值可以采用不同的二进制编码,也就是说同一真值可以有不同的机器数
BCD码
BCD码概念:用二进制编码来表示1个十进制数的每位数字,十进制数的每1位用4个二进制位来表示
【PS:BCD码为十进制数码,即运算规则按十进制“逢十进一”,存储方式按二进制形式存储,切不可混淆】
BCD码的格式:1个十进制数采用BCD码进行存储有两种不同的格式:非压缩的BCD码、压缩的BCD码
- 非压缩的BCD码:1个字节存储1个BCD码,一般占用字节的低4位,字节的高4位可以存储0000。不考虑符号,也就是只考虑无符号数,N个字节可以存储N个BCD码
- 压缩的BCD码:用1个字节存储2个BCD码,不考虑符号,只考虑无符号数,N个字节可以存储2xN个BCD码
BCD码表示有符号数与无符号数
BCD码可以表示无符号数,也可以表示有符号数。通常在BCD编码中
- 如果数值是无符号数,则用编码1111表示
- 如果数值是有符号数,正数用编码1100表示,负数用编码1101表示
对于压缩BCD码,可以把符号位的编码放在数值位编码的最右边或最左边(BCD码符号位一般不要求)
字符与字符串
校验码
数字信息在传输过程受到外界干扰,会产生错误,为发现或者改正错误,需要检测错误或者纠正错误的技术
- 检测错误技术:只发现错误
- 纠正错误技术:发现并纠正错误,恢复正确的信息
校验码(冗余位):假定信息要从器件A传输到器件B,器件A在发送正常信息的同时需要发送额外的信息,这些额外的信息被称为校验码。器件B根据接收到的校验码,确定接收到的信息是否无误。常见的三种校验方法:奇偶校验、循环冗余校验、海明校验
奇偶校验
校验码占1位(理论上,校验码的位置可以放在信息的任意位置;为了方便通常将校验码放在信息的最前面或最后面,只需要信息的发送方与接收方约定好校验码的位置即可)
【PS:奇偶校验可以发现奇数个数据位的错误,不能发现偶数个数据位的错误;但实际上信息传输中,产生1个数据位的错误的概率更多,因此奇偶校验在实际中是有价值的,且奇偶校验方法简单】
循环冗余校验(CRC)
【详细后续更新……】
海明码(汉明码)(更新中……)
【详细后续更新……】
定点数的表示与运算
定点数的表示
小数点按约定方式标出
定点小数:小数点在符号位之后,有效数值部分最高位之前
定点整数:小数点在有效数值部分最低位之后
根据小数点的位置,可以把定点计算机分成两类:小数定点机、整数定点机
【PS:计算机中机器数的存储一定要考虑机器的字长位数】
有符号数和无符号数
无符号数:没有正负符号,只有数值部分
- 存储方式:只需将数值部分转换成二进制,利用寄存器或存储器按照规定的长度保存到计算机当中
- 整个机器字长全部二进制位均为数值位,机器字长n位 数的表示范围 0~2^n - 1
有符号数:带有正负符号部分以及数值部分,最高位为符号位
- 存储方式:将符号与数值这两部分存进寄存器或存储器当中
- 小数的存储:保存三个部分,即符号部分、小数点的位置、数值部分(小数点的位置并没有任何硬件专门进行存储,是通过最初硬件设计的约定规定好的,比如定点小数的小数点位置约定在符号位之后)
- 整数的存储:也保存三个部分,即符号部分、数值部分、小数点的位置(小数点位置约定在数值部分之后)
原码表示法
【最高位为符号位,0表示为正,1表示为负,书写时可以用“,”(整数)或“.”(小数)将数值部分和符号位隔开】
纯整数的原码表示:
纯小数的原码表示:
原码特点:简单、直观,但是运算不方便(0的表示不唯一、加减法操作不统一)
补码表示法
“补”的概念:一个负数加上“模”即可得该负数的补数
- 一个正数和一个负数互为补数时,它们绝对值之和即为模数
- 两个互为补数的数,分别加上模,结果仍互为补数
纯整数的补码表示:
纯小数的补码表示:
求补码快捷方式
- 当真值为正时,补码与原码相同
- 当真值为负时,补码可由原码除符号位外每位取反,末位加1求得(从补码转换为原码此规则同样成立)
- 已知[y]补,求[-y]补
方法:[y]补连同符号位在内,每位取反,末位加1,即得[-y]补
【计算机中的数据表示一般为补码表示】
反码表示法
纯整数的反码表示:
纯小数的反码表示:
求反码快捷方式:正数反码与原码相同;负数反码为原码除符号位外每位取反
移码表示法
移码的引入目的:补码表示很难直接判断其真值大小
移码和补码的比较:补码与移码只是符号位不同,数值位不变
移码的特点:0的表示唯一、最小真值的移码为全0、能方便地判断浮点数的阶码大小
【阶码相关内容详细见本文浮点数的表示(IEEE 754)】
符号扩展
定点数的运算
移位运算
移位运算的数学意义
- 由于小数点的位置在计算机中并没有任何硬件专门进行存储,计算机中的算术移位均为数据进行移位。数据左移,绝对值扩大;数据右移,绝对值缩小
- 在计算机中移位与加减配合能够实现乘除运算
- 有符号数的移位称为算术移位,无符号数的移位称为逻辑移位
算术移位规则
算术移位的硬件实现
逻辑移位规则
循环移位
原码定点数的加/减法运算
加法:先判断符号位,若符号位相同则绝对值相加,符号位不变;若符号为不同则做减法,绝对值大的数减去绝对值小的数,符号位与绝对值大的数保持一致
减法:减数符号位取反,之后按加法规则进行计算
补码定点数的加/减法运算
定点数的乘/除运算(更新中……)
【详细后续更新……】
溢出的概念及判别方法
溢出: 是指计算机进行算术运算产生的结果超出机器所能表示的范围。溢出有上溢和下溢之分。
在定点计算机和浮点计算机中,上溢和下溢的概念是不完全相同的
在定点计算机中,从正方向超过了数的表示范围,称为上溢;从负方向超过了数的表示范围,则称为下溢
在浮点计算机中,浮点数的表示范围主要由阶码来决定。不论数的符号是正还是负,若阶码从正的方向超出了阶码的表示范围,称为上溢;若阶码从负的方向超出阶码的表示范围,或者尾数为“0”时,统称为下溢
溢出的判别方法:
方法一:采用一位符号位,设A的符号为AS,B的符号为BS,运算结果的符号为SS,则溢出逻辑表达式为
方法二:采用一位符号位,根据数据位进位情况判断溢出
即CS与C1不同时,有溢出发生。也即
溢出逻辑判断表达式V=CS异或C1,若V=0则表示无溢出,V=1表示有溢出
方法三:采用双符号位
浮点数的表示和运算
浮点表示引入的目的
- 定点表示编程困难,程序员需要调节小数点的位置
- 数的表示范围小,为了能表示两个大小相差很大的数据,需要很长的机器字长
- 数据存储单元的利用率往往很低
浮点数的表示及IEEE 754标准
浮点数的表示
IEEE 754标准
【详细后续更新……】
浮点数的加减运算
算术逻辑单元ALU
串行加法器和并行加法器(更新中……)
【详细后续更新……】
算术逻辑单元ALU的功能和结构
功能:进行多种算术运算(加、减、乘、除等)和逻辑运算(与、或、非、异或、移位、求补等)
基本结构:
持续更新中……
我是桐小白,一个摸爬滚打的计算机小白