【计算机组成原理】知识梳理(二)运算基础

本文详细介绍了数据的表示方法,包括数字数据的表示,如进位记数制、权、基数、进制转换,以及二、十、十六进制之间的转换。重点讲述了二进制补码表示法在有符号数和无符号数、定点数与浮点数中的应用,以及字符数据的ASCII码和Unicode码。此外,还讨论了机器码的表示,如原码、补码、反码和移码,以及浮点数的表示和运算,包括浮点数的溢出、加减法和乘除法。最后提到了数据校验中的奇偶校验码和海明校验码。
摘要由CSDN通过智能技术生成

2.1 数据的表示

2.1.1  数字数据的表示

权:在进位记数制中,表示数值大小的数字与它在数中的位置有关,同一数字处于不同的数位时表示的数值是不同的,即权不同。
基数:表示某种进位记数制所拥有的数字的个数 

进制转换

二进制数与八进制数之间的转换 :以小数点为界,分别向左向右每三位二进制数合成一位八进制数,或每一位八进制数展成三位二进制数,不足三位者补0。
二进制数与十六进制数之间的转换 :以小数点为界,分别向左向右每四位二进制数合成一位十六进制数,或每一位十六进制数展成四位二进制数,不足四位者补0。

二、十、十六进制的转换

00010000000000000000100000000000 和 00010000000000000001000000000000

0001 0000 0000 0000 0000 1000 0000 0000 =>0x10000800

0001 0000 0000 0000 0001 0000 0000 0000 =>0x10001000

0FFFH,1FFFH,FFFEH,FFF1H

有符号数和无符号数
无符号数

        有符号数         

定点数与浮点数
定点格式:容许的数值范围有限,但要求的处理硬件比较简单 ( x=x 0 x 1 x 2 x n )
定点整数:表示范围 0 £ |x| £ 2 n -1
定点小数:表示范围 0 £ |x| £ 1-2 -n
浮点格式:容许的数值范围很大,但要求的处理硬件比较复杂。
浮点数的一般表示方法: N=R e · M    其中, M 为尾数(定点小数), R 为基数(定点整数), E 为阶码(定点整数)。

2.1.3  字符数据的表示  

字符与字符串的表示

要对字符进行识别和处理,必须通过编码的方法,按照一定的规则将字符用一组二进制数编码表示。
常见的字符编码: ASCII 码、 Unicode 码等
ASCII 编码 American Standard Code for Information Interchange ,美国标准信息交换码),它已被国际标准化组织( ISO )定为国际标准,称为 ISO 646 标准。
ASCII 码用 7 位二进制数表示一个字符,总共 128 个字符元素,包括 10 个十进制数字( 0 9 )、 52 个英文字母( A Z a z )、 34 个专用符号和 32 个控制符号。
ASCII 码表中的编码值 0 31 不对应任何可印刷字符,这些编码值对应的字符称为控制字符,用于通信中的通信控制或对计算机设备的功能控制。
扩展 ASCII 码为 8 , 是用八位二进制数表示一个字符,因此可以表示 256 个不同的字符。

汉字的输入编码

国标区位码
拼音码
字形码
汉字内码
汉字信息在存储、交换、检索等操作时使用的机内代码,一般采用两个字节表示。且每个字节最高位为1(为区别ASCII码)。
内码=区位码+A0A0H
国标码=区位码+2020H
GB23126763
GB13000.120902
GB1803027533
BIG513000
UNICODE (统一码、万国码、单一码)
汉字字模码
用点阵、矢量函数等方式表示的汉字字形代码,是汉字的输出形式。

 2.2 机器码的表示

带符号表示

计算机中存储负数,其实不是存储问题,而是解释的问题。
给定的寄存器大小可存储的最大模式数是固定的,但程序员可以将一些模式解释为负数值。
通常的方法是采用一种称为二进制补码表示的解释方式。还有原码、反码和移码三种。

2.2.1 原码表示法

最高位表示符号位,符号位为0表示正数;符号位为1表示负数,数值部分用二进制的绝对值表示。

特点:有界

做加减法要先判断正负数

补码的表示

手工计算二进制补码的方法:
对任何大小的寄存器,- 1 的表示都是寄存器所有的位均为 1 。- 1 加上 1 将产生溢出并使寄存器的所有位均为 0
对任何一个模式,各位取反( NOT ),并将得到的数再加上原来的数,得到的结果就是寄存器所有的位均为 1 。即- 1
再加上 1 呢?
这个反转的模式加 1 就得到原来数的二进制补码
低位的第一个 1 后面的高位全部取反。
特点:
0 的表示唯一
符号位可以参与运算
减去一个数就等同于加上这个数的负数,所以减法可以用加法来实现
运算规则
[X+Y] = [X] + [Y]
[X -Y] = [X] + [-Y]

2.2.3 三种码制表示总结  

机器码的表示方法:原码、补码、反码、移码
原码反码的 0 有正零和负零两种表示方法
应用:
讨论机器码的表示范围(寄存器为 8 位):
原码、反码的表示范围是 +(2 7 -1)~-(2 7 -1) +127~-127
补码的表示范围是: +(2 7 -1)~-(2 7 )    +127~-128

三种码制的转换

例:已知真值X1=+78X2=-78[x][x][x]

解:X1=+78=0100110B

    [x1]=01001110       [x1]=01001110       

    [x1]=01001110

X2=-78=-01001110B

     [x2]=11001110      [x2]=10110001     

     [x2]=10110010

2.3补码的加减法运算

2.3.1 补码的加法 

[X]+ [Y]= [X+Y]

1:0.1001, 0.0101,。(5位)

   解: []补=0.1001, []补=0.0101

           []补   0.1001

        []补   0.0101 

        []补  0.1110 

所以   =+0.1110

2 =+0.1011, =-0.0101,y。

: []补=0.1011,  []补=1.1011

        []补   00.1011

     []补   11.1011 

        []  100.0110 

所以     0.0110

2.3.2 补码的减法

  [x-y][][-y] 

2.3.3溢出概念及判断方法 

在定点数表示法中,要求参加运算的数以及运算的结果都必须保证落在该定点数所能表示的数值范围内。绝对值小于最小正数的数一般会被当成机器0处理,称为下溢大于最大正数和小于绝对值最大负数的数都称为上溢。发生溢出时,计算机将暂时中止运算操作,进行溢出处理。

正溢,负溢

双符号位法(变形补码)
运算结果的二符号位相异时,表示溢出;相同时,表示未溢出。

  Sf1     SF2

   0         0  正确(正数)
0  1  溢出 
1  0  溢出
1  1  正确(负数)

Sf 1 表示正确的符号,逻辑表达式为 V=Sf 1 Sf 2 , 可以用异或门来实现
单符号位法(利用进位)
C f   C 0
0  0  正确(正数)
0  1  溢出 
1  0  溢出
1  1  正确(负数)
故溢出逻辑表达式 : V C f C o ,其中 C f 为符号位产生的进位, C o 为最高有效位产生的进位。

2.3.4 定点加法器

两个二进制数字AiBi和一个进位输入Ci相加,产生一个和输出Si,以及一个进位输出Ci1。下面列出一位全加器进行加法运算的输入输出真值表。

FA(全加器)逻辑电路图

        

FA框图

 

行波进位的补码加法/减法器 

定点计数器的组成 

逻辑运算(简)
逻辑非
逻辑加
逻辑乘
逻辑异或
多功能算术 / 逻辑运算单元( ALU
内部总线结构

XiYi 与控制参数和输入量的关系构造如下真值表

 

进一步化简得到下式

 

ALU的某一位逻辑表达式见下: 

 先行进位

4 位之间采用先行公式,每一位的进位公式可递推如下:
C n 1 Y 0 X 0 C n 
C n 2 Y 1 X 1 C n 1 Y 1 Y 0 X 1 X 0 X 1 C n 
C n 3 Y 2 X 2 C n 2 Y 2 Y 1 X 1 Y 0 X 1 X 2 X 0 X 1 X 2 C n
C n 4 Y 3 X 3 C n 3 Y 3 Y 2 X 3 Y 1 X 2 X 3 Y 0 X 1 X 2 X 3 X 0 X 1 X 2 X 3 C n
G Y 3 Y 2 X 3 Y 1 X 2 X 3 Y 0 X 1 X 2 X 3
  P X 0 X 1 X 2 X 3
G 为进位发生输出     P 为进位传送输出
增加 P G 的目的在于实现多片(组) ALU 之间的先行进位,需要配合电路,称为先行进位发生器( CLA

        器件: 74181(下图) 

 

    如果将四片74181P,G输出端送入到74182先行进位部件(CLA),又可实现第二级的先行进位,即组与组之间的先行进位。

2.5 定点乘法运算

2.5.1 人工乘法

2.5.2 定点原码乘法

[x] =x f .x n-1 x 1 x0     [y] =y f .y n-1 y 1 y 0
[ x.y ] =( x f y f )+(0. x n-1 x 1 x0).(0. y n-1 y 1 y 0 )
n 位乘 n 位积可能为 2n .
实现方法
方法一:串行的 加法和移位 , 硬件结构简单 , 但速度太慢 ( 时间延迟太长 ).

                 方法二:不带符号位的阵列乘法器 

定点原码一位乘法

利用阵列乘法器来实现

实现过程类似与人工方法

m×n不带符号阵列乘法器逻辑图

 

 

带符号的阵列乘法器 

原理:算前求补-乘法器-算后求补

求补电路 

2.6 定点除法运算 

2.6.1 人工算法

定点原码一位除法实现方案(手工)0.10010/0.1011

2.6.2 定点除法运算

恢复余数法(例) 

加减交替法

在恢复余数除法中,若第 i-1 次求商的余数 R i-1 >0 则第 i 次求商的余数 : 余数左移一位,再减去除数,既: R i =2R i-1 -Y
R i >0,
n i 位的商上 1
n 下一位商的余数 : R i+1 =2R i -Y
R i <0,
n i 位的商上 0 => 恢复余数为 R i +Y
n 下一位商的余数 : R i+1 =2( R i +Y )-Y=2R i +Y
说明 : 若最后一次上商为 0 但需得到正确余数 则需恢复余数
 

2.6.3 阵列除法器

可控加法/减法(CAS)单元 

不恢复余数的阵列除法器 

2.7 浮点数的表示

2.7.1 浮点数格式

移码表示法

移码 —— 用整数形式表示浮点数的阶码方法。
移码的定义:

     [X]=2n +X  -2n < = x< 2n

        n为阶码数值位(除符号位)

浮点数中移码表示阶码说明 

 IEEE754

 

2.7.3 舍入操作

舍入操作
总有一些不能准确表示的数(如 1/3
双精度浮点数转化为单精度浮点数
浮点数转化为整型
IEEE754 标准中的舍入方法 :
Truncate
Just drop the last bits (round towards 0)
Round to (nearest) even
Normal rounding (default mode)
Round towards +infinity
ALWAYS round up : 2.001 3, -2.001 -2
Round towards -infinity

                           ALWAYS round “down”: 1.999 1, -1.999 -2 

 

2.7.4 浮点数的溢出 

2.8 浮点数运算

2.8.1 浮点数的加减法运算

零操作数检查
对阶 ( 小阶向大阶看齐 )
尾数相加减
规格化
舍入操作
溢出判断

2.8.2 浮点数的乘除法运算

尾数相乘除
阶码相加减

2.8.3 流水线浮点运算器 

2.8.4 浮点数运算实例

浮点运算器实例
CPU 之外的浮点运算器(数学协处理器)如 80287
完成浮点运算功能,不能单用。
可以和 80386 80286 异步并行工作。
高性能的 80 位字长的内部结构。有 8 80 位字长以堆栈方式管理的寄存器组。
浮点数格式完全符合 IEEE 标准。
CPU 之内的浮点运算器( 486DX 以上)

2.9 验证码

为了发现和纠正对数据进行加工处理的过程中出现的数据错误,需要采取相应的措施,对数据进行编码。在原始数据(数码位)基础上增加几位校验位是目前比较简单实用的方法。 

2.9.1 奇偶校验码

一种最简单 的数据校验码,其硬件开销最小,可以检验出一位(或奇数位)错误;不能检验偶数位错误,也不能确定出错的位置。
给每一个码字加一个校验位,用它来构成奇性或偶性校验。
奇偶校验位可由硬件电路(异或门)或软件产生:

        实例:

2.9.2 海明校验码

海明码( Richard Hamming ) 是一种多重(复式)奇偶检错系统,用于检错和纠正一位错
确定校验码的值需三步:
确定最小的校验码位数
分配校验位和信息位
计算校验码

如何确定最小的校验位数 r

假设为k个数据位设置r个校验位,则校验位能表示2^r个状态,可用其中的一个状态指出 没有发生错误,用其余的2^r -1个状态指出有错误发生在某一位,包括k个数据位和r个校验位,因此校验位的位数应满足如下关系:

                 2^r-1 ≥ k + r

    按上述不等式,可计算出数据位k 与校验位 r 的对应关系,如下表所示。
分配校验位和信息位
校验码是放在 2 的幂次位上的,如 1 2 4 8 16….
信息位从低位到高位依次排列,如果该位置被校验位占据之后就往后移,直到没有被占据的空位。

计算校验位的值(配偶原则

 

接收端如何检验和纠错 ( 举例 )

    假设信息传输前1100 1101 1110   传输后为1110 1101 1110,有一位错。

S1P1⊕1⊕1⊕0⊕1⊕1=1⊕1⊕1⊕0⊕1⊕1=1

S2P2⊕1⊕1⊕0⊕1⊕1=1⊕1⊕1⊕0⊕1⊕1=1

S3P4⊕1⊕1⊕0⊕0=0⊕1⊕1⊕0⊕0=0

S4P8⊕1⊕1⊕1⊕0=1⊕1⊕1⊕1⊕0=0

计算出错处的位数 s4s3s2s1:0011

 即为第3位传输出错 

1:设信息位为:1011,计算校验码(配偶原则)。

1步,r=?

   2r-1>=K+r

   r=3, p1p2p3

2步,确定校验码p1p2p3的位置:校验位放在2n位(n0,1,2……

   p1 p2 1 p4 0 1 1(最左为检验码的第1位)

3步,确定校验位p1,p2,p4的值

    校验规则,

   p1校验1,3,5,7……(包括自己在内,隔位校验)

   p2校验2,3,6,7……(包括自己在内,连续2位,间隔2位,连续2……

   p4校验4,5,6,7……(包括自己在内,连续4位,间隔4位,连续4……)

    根据配偶原则,p1=0, p2=1,p4=0

4步,构成校验码为:0110011

2:有海明检验码(配偶原则)0100011,问该校验码有没有错,如果有错,指出哪位出错了。

解:S1(1,3,5,7)=0 ⊕ 0 ⊕ 0 ⊕ 1=1

       S2(2,3,6,7)=1 ⊕ 0 ⊕ 1 ⊕ 1=1

       S3(4,5,6,7)=0 ⊕ 0 ⊕ 1 ⊕ 1=0

  S3S2S1=011=(3)10

3位出错,故正确的校验码为: 0110011

小结

一个定点数由符号位和数值域两部分组成。按小数点位置不同,定点数有纯小数和纯整数两种表示方法。
IEEE754 标准,一个浮点数由符号位 S 、阶码 E 、尾数 M 三个域组成。其中阶码 E 的值等于指数的真值 e 加上一个固定偏移值。
ASCII 码和 UNICODE 编码。
原码、补码、移码
给定宽度的数据表示有范围,运算结果要做溢出判断
理解运算器的组成( datapath

为运算器构造的 简单性 ,运算方法中算术运算通常采用补码加、减法,原码乘除法或补码乘除法。为了运算器的 高速性 和控制的简单性,采用了先行进位、阵列乘除法、流水线等并行技术措施。运算方法和运算器是本章的重点。

        定点运算器和浮点运算器的结构复杂程度有所不同。早期微型机中浮点运算器放在CPU芯片外,随着高密度集成电路技术的发展,现已移至CPU内部。

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aaron_Liu0730

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值