导图社区 (二)数据的表示和运算
计算机组成原理,第二章数据的表示与运算思维导图整理,包括1、进位计数制及其数据之间的相互转换和2、定点数的编码表示。计算机考研408专用!
编辑于2021-10-02 00:01:50(一)数制与编码
1、进位计数制及其数据之间的相互转换
计算机中所有信息都使用二进制编码的原因
1)二进制只有两种状态,使用有两个稳定状态的物理器件就可以表示二进制数的每一位,制造成本较低,例如高低电平或者电荷的正负极性都可以很方便地表示0和1
2)二进制位0和1正好与逻辑值”真“和”假“对应,为计算机实现逻辑运算和程序中的逻辑判断提供了便利条件
3)二进制的编码和运算规则都很简单,通过逻辑门电路就能方便的实现算术运算
不同数制之间的相互转换
二进制转八进制
转换时以小数点为界,整数部分和小数部分分别3位为一组,整数部分不足的地方高位补0,小数部分不足的地方低位补0,然后每一组用对应的八进制数取代
二进制转十六进制
转换时以小数点为界,整数部分和小数部分分别4位为一组,整数部分不足的地方高位补0,小数部分不足的地方低位补0,然后每一组用对应的十六进制数取代
任意进制转十进制
按权展开相加法
十进制转任意进制数
不是所有十进制小数都可以被二进制精确的表示,但是任意一个二进制小数都可以用十进制表示
基数乘除法,其中对整数部分和小数部分分别进行处理,再将结果进行拼接
整数部分采用除基取余法:整数部分除基取余,最先取得的余数为数的最低位,最后取得的余数为数的最高位,商0时结束
小数部分采用乘基取整法:小数部分乘基取整,最先取得的整数为数的最高位,最后取得的整数为数的最低位,乘积为1.0(或满足精度要求)时结束
2、定点数的编码表示
无符号数和有符号数的表示
无符号数:指整个机器字长的全部二进制位均为数值位,没有符号位,相当于数的绝对值,多用于表示主存中的地址信息,8位下的表示范围为0~255
有符号数:指将符号位放在有效数字的最高位组成有符号数,其中有符号数的机器表示有原码、反码、补码和移码
机器数的定点表示
定点小数:是纯小数,约定小数点位置在符号位之后,有效数值部分的最高位之前
定点整数:是纯整数,约定小数点位置在有效数值最低位之后
机器数表示法
原码表示法
最高位为符号位,其余各位表示数的绝对值
纯小数的原码
最大值:0(.)111..1,即为
最小值:1(.)111..1,即为
表示范围为:
纯整数的原码
最大值:0,111..1(.),即为
最小值:1,111..1(.),即为
表示范围为:
其中真值为0的原码有两种形式1,000..0和0,000..0
反码表示法
反码作为由原码与补码之间的过渡
纯小数的反码
最大值:0(.)111..1,即为
最小值:1(.)000..0,即为
表示范围为:
纯整数的反码
最大值:0,111..1(.),即为
最小值:1,111..1(.),即为
表示范围为:
其中真值为0的原码有两种形式1,111..1和0,000..0
补码表示法
使用补码表示法可以简化减法操作,因而不设置减法器
如:计算x-y,[x-y]补=[x]补-[y]补=[x]补+[-y]补
其中[-y]补可用硬件求得:[y]补全位取反+1
纯小数的补码
最大值:0(.)111..1,即为
最小值:1(.)000..0,即为-1
表示范围为:
纯整数的补码
最大值:0,111..1(.),即为
最小值为:1,000..0(.),即为
表示范围为:
其中真值0的补码仅有一种形式0,000..0
补码的算术移位
将[x]补的符号位与数值为一起右移一位并保持原符号位的值不变,可实现除以2的功能
变形补码:采用双符号位,其中00表示正,11表示负,用在完成算术运算的ALU中,可以进行溢出判断,其中01为正溢出,10为负溢出
移码表示法
移码通常用于表示浮点数的阶码。它只能表示整数,移码通常为原码+偏移量(通常为2^n),即移码=原码+2^n
移码具有的特点
移码中的0表示唯一
一个真值的移码和补码仅差一个符号位,[x]补的符号位取反即得[x]移
移码全0时,对应真值的最小值-2^n,移码全1时,对应真值的最大值2^n-1
移码保持了原有数据的大小顺序,移码越大真值越大,移码越小真值越小(便于比大小因此作为浮点数阶码)
(二)运算方法和运算电路
1、基本运算部件
运算器算术逻辑单元ALU (Arithmetic Logic Unit)
运算器由ALU、累加器、状态寄存器和通用寄存器等组成
基本功能包括:加、减、乘、除四则运算,与、或、非、异或等逻辑运算,以及移位、求补等操作
运算器的操作和操作种类由控制器决定。其中运算器处理的数据来自存储器,处理后的结果数据通常送回存储器或暂存寄存器中
串行加法器 并行加法器
ALU的核心部件是加法器,加法器是由全加器再配以其他必要的逻辑电路组成,根据组成加法器的全加器个数是单个还是多个,加法器有串行和并行之分
1. 一位全加器
输入位:加数Ai,加数Bi与低位进位Ci-1
输出位:本位Si与高位进位Ci
本位Si表达式:
高位进位Ci表达式:
2. 串行加法器
由一个全加器和一个进位触发器组成
可以进行n位的加法,分n次进行,每次产生的进位送入进位触发器,以便参加下一位的运算
串行加法器具有器件少、成本低的优点,但运算速度较慢,多用于某些低速的专用运算器
3. 并行加法器
由多个全加器组成,其位数与机器字长相同,各位数据同时运算
虽然操作数的各位是同时提供的,但是进位会影响高位的结果,因此并行加法器的最长运算时间主要是由进位信号的传递时间决定的
按进位方式划分: 串行进位并行进位
串行进位:又称行波进位,每级进位直接依赖于前一级的进位,即进位信号是逐级形成的(其将n个全加器串接起来,即可实现两个n位二进制数的相加)
并行进位
又称先行进位、同时进位,其特点是各级进位信号同时形成,若把n位全加器分为若干个小组,小组内的各位之间实现并行快速进位(其中实现组内并行的电路叫做先行进位电路CLA),小组与小组之间可以采用串行进位和并行进位,可分为如下两类
单级先行进位方式:又称组内并行、组间串行进位方式,16位单级先行加法器,此电路由4个4位CLA加法器构成
多级先行进位方式:又称组内并行、组间并行进位方式,16位的两级先行加法器可由4个4位的BCLA加法器(成组先行进位电路)及1个CLA电路构成(为了加快加法运算的速度,实际电路一定使用了多级先行进位方式)
2、加/减运算
标志位的生成
无符号整数只能用于两个无符号数相加,为了能进行带符号整数的加减运算,还要在无符号数加法器的基础上增加相应的逻辑门电路,使得其还可以产生标志信息
溢出标志OF
含义:有符号数的加减运算结果是否发生了溢出,OF=1时说明溢出
硬件的计算方法
采用一位符号位,根据数据位的进位情况判断 OF=最高位产生的进位⊕符号位产生的进位
采用一位符号位 记加数的符号分别为A和B,结果符号为S
采用双符号位 记运算结果的两个符号位分别为S1和S2 00表示结果为正数,无溢出;01表示结果正溢出;10表示结果负溢出;11表示结果为负数,无溢出
注意:OF位对无符号数的加减法没有意义
符号标志SF
含义:有符号的加减运算的结果的正负性,SF=1时说明结果是负数
硬件的计算方法:SF=最高位的本位和
注意:SF位对无符号数的加减法没有意义
零标志ZF
含义:表示运算结果是否为0,ZF=1时说明运算结果为0
硬件的计算方法:两个数的计算结果n位全为0,则ZF=1
进位/借位标志CF
含义:表示无符号数的加减法是否发生了进位或借位,CF=1时说明发生了进位/借位,也即发生了溢出
硬件的计算方法:CF=最高位产生的进位⊕sub
sub=1表示减法操作
sub=0表示加法操作
注意:CF位对有符号数的加减法没有意义
带标志符的加法器
补码加减运算器
补码的减法运算是通过转为加法操作而实现的
当Sub为1时做减法,实现
当Sub为0时做加法,实现
其硬件组成即为带一个标志符的加法器在Y输入端加n个反向器(实现按位取反),然后再加一个2选1多路选择器MUX,用一个Sub端控制,同时将Sub作为低位进位送到加法器(取反+1中的+1操作)
3、乘/除运算
乘法运算的基本原理
在计算机中,乘法运算是由累加和右移操作实现的,根据机器数的不同可分为原码一位乘法和补码一位乘法
原码一位乘法 (以定点小数为例)
①被乘数和乘数的绝对值参加运算,符号位为
②高位部分积的长度同被乘数,取n+1位,以便存放乘法过程中绝对值大于等于1的值,初始值是0(存放在ACC累加寄存器中)
③从乘数的最低位开始判断,若最低位=1,则高位部分积+被乘数|x|,然后积整体(ACC中的高位部分积与MQ中的低位部分积)右移一位;若最低位=0,则高位部分积+0,然后积整体右移一位
④重复步骤③,判断n次
注意:考虑到运算时可能出现绝对值大于1的情况(但此刻并非溢出),所以部分积和被乘数取双符号位(高位进位位(ACC中的第n+1位)和预先计算符号位)
补码一位乘法
①符号位参与运算,运算的数均以补码表示
②被乘数一般取双符号位参与运算,部分积取双符号位,初值为0,乘数可取单符号位
③乘数末尾增设附加位,且初值为0
④根据附加位和最低位的取值来确定操作
⑤移位按补码右移规则进行(高位补符号位)
⑥按照上述算法进行n+1步操作,但第n+1步不再移位(共进行n+1次累加和n次右移),仅根据最低位和附加位的比较结果做相应的运算
乘法运算总结
除法运算的基本原理
在计算机中,除法运算可转换成“累加——左移”(逻辑左移),根据机器数的不同,分为原码除法和补码除法
原码除法运算 (不恢复余数法)
①商的符号(符号位不参与运算):
②商的数值:
③用被除数减去除数
当余数为正时,商上1,余数和商左移一位,再减去除数
当余数为负时,商上0,余数和商左移一位,再加去除数
④重复步骤③,判断n次,若当第n+1步余数为负时,需加上|Y|得到第n+1步正确的余数
补码除法运算 (加减交替法)
①符号位参加运算,除数和被除数均用补码表示,商和余数也用补码表示
②若被除数与除数同号,则被除数减去除数,商上1,余数左移一位
③若被除数与除数异号,则被除数加上除数,商上0,余数左移一位
④重复执行操作n次
注意:若对商的精度没有特殊要求,则一般采用“末尾恒置1”法
除法运算总结
乘除法电路
以原码乘法电路为例
(三)整数的表示和运算
1、无符号整数的表示和运算
无符号整数的表示
指整个机器字长的全部二进制位均为数值位,没有符号位,相当于数的绝对值,多用于表示主存中的地址信息,8位下的表示范围为0~255
无符号整数的运算
所谓的无符号数只是对于数据的解读方式不一样,并不影响数据之间的计算。而无符号数之间进行的加减法运算,是通过补码来进行的。计算机本质上还是通过补码来实现减法运算:
2、带符号整数的表示和运算
有符号整数的表示
有符号数:指将符号位放在有效数字的最高位组成有符号数,其中有符号数的机器表示有原码、反码、补码和移码
有符号整数的运算
运算方式,详见数制与编码
(四)浮点数的表示和运算
1、浮点数的表示
2、IEEE754标准
3、浮点数的加/减运算