计算机组成原理(纪禄平)第二章

数据的表示、运算与校验

数制及其相互转换
    数制的基与权
        在任一数制中,每一个数位上允许使用的记数符号的个数称为该数制的基数
        每1位都对应1个表示该位在数码中的位置的值,这个值就称为数位的权值W
        例:
            128[10]       W = 10^2
            1101[2]       W = 2^3
    常用的几种进位制
        2进制:0、1
        8进制:0、1、2、3、4、5、6、7
        16进制:0、……、9、A、B、C、D、E、F
    进制之间的转换

在这里插入图片描述

        例:

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

原码反码和补码
    数的符号表示规则
        “0”表示正号“+”,“1”表示负号“—”
    原码
        一个二进制数,用0-1代码表示符号,数值位不变就得到与改二进制数真值对应的原码
        例:

在这里插入图片描述

        字长为8位的原码
            表示范围:-127~+127      2^7-1
            数值“0”有两种原码形式
                [+0] = 0 0000000
                [-0]  = 1 0000000
    反码
        正数情况

在这里插入图片描述

            例:

在这里插入图片描述

        负数情况
            符号位保持为“1”,数值位分别“按位取反”
            例:

在这里插入图片描述

        字长8位的反码
            表示范围:-127~+127      2^7-1
            数值“0”有两种反码形式
                [+0] = 0 0000000
                [-0]  = 1 1111111
    补码

在这里插入图片描述

        补码的编码规则
            对于正数(字长8位)

在这里插入图片描述

            对于负数(字长8位)
                符号位礽保持为“1”
                其余各数位“按位取反,末尾再加1”

在这里插入图片描述

        字长8位的补码
            表示范围:-128~+127     
            注意
                补码比原码和反码多表示1个负值,即-128
                数值“0”只有1钟补码形式

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

原码补码转换及变补
    已知原码求补码
        例:

在这里插入图片描述

    已知补码求原码
        补码再求补码就是原码
        例:

在这里插入图片描述

    求补(常见于减法运算)
        即已知补码,求该数负数的补码
        [X]补的代码连同符号位一起变反,末位再加1,即得到[-X]补
        例:

在这里插入图片描述

移码的表示规则
    移(增)码
        移码通常用于表示浮点数的阶码
        阶码一般是整数,故移码通常只用于表示整数
        对定点整数X,它的移码是:

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

        上述规则等价于将X正向平移或者增加2^(n-1),因此称之为移码或增码
        例: 

在这里插入图片描述

        移码表示范围与补码一致,0也只有1个移码
        正数:将原码符号位变反,即可得到移码
        负数:将原码连同符号位一起变反,末位再加1,即得到移码(与变补等效)
        补码和移码符号相反、数值相同
数的定点表示法
    定点数
        数的小数点固定在同一位置不变
        带符号的定点小数
            约定所有数的小数点的位置,固定在符号位之后

在这里插入图片描述

        带符号的定点整数
            小数点的位置固定在最低数值之后

在这里插入图片描述

        无符号的定点整数
            小数点的位置固定在最低数值之后

在这里插入图片描述

        字长8位的定点数的表示范围

在这里插入图片描述

数的浮点表示原理
    浮点表示中,小数点的位置可按需浮动
    格式模型

在这里插入图片描述

    引入浮点数的意义
        例:

在这里插入图片描述

    浮点数的机器(存储)格式
        浮点数真值

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

        R:阶码的底数,隐含约定为2
        E:阶码,定点整数,补码或移码表示,其位数决定了数值的范围
        M:尾数,为定点小数,原码或补码表示,其位数决定着数的精度;数符表示数的正负
    浮点数的尾数规格化
        规格化的目的→使浮点数的表示代码“唯一”
        科学计数法约定:1≤| M | < 10
        浮点数用原码表示
            1/2 ≤| M | < 1
        浮点数用补码表示时

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

        例:

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

     IEEE754格式浮点数
        有32 位浮点数(单精度)和64位浮点数(双精度)
        32位短浮点数

在这里插入图片描述

            在上述的表示格式中:
                S  =  浮点数的符号位,0表示正数,1表示负数
                E  =  阶码,8位,采用移码表示,阶符隐藏
                M =  尾数,23位,纯小数表示,且真值 = 1+M
                阶码E采用移码形式,但只偏移2^7 - 
         64位长浮点数

在这里插入图片描述

            在上述的表示格式中:
                S  =  浮点数的符号位,0表示正数,1表示负数
                E  =  阶码,11位,采用移码表示,阶符隐藏
                M =  尾数,52位,纯小数表示
                阶码E采用移码形式,但只偏移2^10 - 1
        补充说明

在这里插入图片描述

        例:

在这里插入图片描述

英文字符—ASCII码
    字符总数128
        包含数字0~9,大小写英文字母,运算符,标点符号,标识符,格式控制符
    代码宽度:7b
    存储宽度:7b(有效位)+ 1b(奇偶校验位)=  8b = 1B
    ASCII码示例
        数字型

在这里插入图片描述

        字符型

在这里插入图片描述

        其他类型

在这里插入图片描述

中文字符—汉字码
    汉字输入码
        数字码,拼音码,字形码
            数字输入码
                常用的是国际区位码,用数字串代表汉字
                将6763个二级汉字分为94个区,每区94位,把汉字表示成二维数组,数组下标就是区位码
                优缺点
                    无重码,输入码与内部码的转换方便,代码难以记忆
                    例:

在这里插入图片描述

            拼音输入码
                以汉字拼音为基础的输入法
                优缺点
                    简单方便
                    同音字多,重码率高,影响输入速度
            字形输入码
                根据汉字的书写形状来进行编码(五笔)
                优缺点
                    简单方便,符号书写习惯
                    重码率高,需要记住字形结构
    汉字的内码
        用于汉字信息的存储、交换、检索等操作的计算机内代码,一般用两个字节表示
        机内码的基础是国标码
        国标码
            10进制区位码转换为16进制,再加2020H
        机内码
            国际码+8080H(与ASCII区别),或者区位码转成16进制+A0A0H
        例:

在这里插入图片描述

    汉字字模码
        用点阵表示的汉字字形代码,是汉字的输出形式
        例:

在这里插入图片描述

        特别说明:
            字模点阵用来构成汉字字库,并非机内存储
            字库中存储每个汉字的点阵代码,用于汉字的显示输出或打印输出
            当显示输出或打印输出时才检索字库,输出字模点阵,得到字形
    汉字的输入码、内码、字模码分别是用于计算机输入、内部处理、输出三种不同用途的编码
    各有各的用途,不能混为一谈
移位操作
    逻辑移位、算术移位
    逻辑移位
        数码位置变化
        例:

在这里插入图片描述

    算术移位
        符号位不变,数码位置变化
        例:

在这里插入图片描述

    正数补码\原码位移规则
        移位规则
            数符不变(单符号位:符号位不变:双符号位:第1符号位不变)
            空位补0(右移时第2符号位移至尾数最高位)
            例:

在这里插入图片描述

    负数补码移位
        移位规则
            数符不变(单符号位:符号位不变:双符号位:第1符号位不变)
            左移空位补0
            右移空位补1(第二符号位移至尾数最高位)
            例:

在这里插入图片描述

            易错点

在这里插入图片描述

舍入与拓展操作
    舍入方法
        0舍1入(原码、补码)
            例:

在这里插入图片描述

        末尾恒置1(原码、补码)
            例:

在这里插入图片描述

    数位扩展与压缩
        符号扩展
            直接把符号位(0/1)填充到拓展位
                例:

在这里插入图片描述

        0—扩展
            高位均全补0 (针对无符号数)
                例:

在这里插入图片描述

        位数压缩(有损压缩)
            弃高位、留低位
                例:

在这里插入图片描述

存储模式与对齐
    数据存储
        小端模式
            小地址单元存储数据的低位(即尾端)
                例:

在这里插入图片描述

        大端模式
            大地址单元存储数据的低位(即尾端)
                例:

在这里插入图片描述

    数据字的对齐
        要求数据的地址是相应的边界地址
        按边界对齐(假定存储字宽度为32位,按字节编址,字长32位)
            字地址:4的倍数(低两位为0)
            半字地址:2的倍数(低位为0)
            字节地址:任意
        不按边界对齐
        例:

在这里插入图片描述

定点运算—补码加减1(运算与控制)
    补码的加减法

在这里插入图片描述

        科学依据

在这里插入图片描述

        例:

在这里插入图片描述

    补码表示与变补运算的区别
        例:

在这里插入图片描述

    补码加减运算流程

在这里插入图片描述

    逻辑实现

在这里插入图片描述

定点运算—补码加减2(溢出判断)
    溢出规则

在这里插入图片描述

        例:

在这里插入图片描述

    硬件判断逻辑一(根据SA、SB与Sf的关系)
        例:

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

    硬件判断逻辑二(根据Cf与C的关系)
        例:

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

    硬件判断逻辑三(从双符号位)(Sf1与Sf2相同无溢出)
        例:

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

定点运算—原码加减
    原码加减法
        符号位单独处理、数值位加减
    先比较两数符号
        加法:同号数值位求和,异号求差

在这里插入图片描述

        减法:异号数值位求和,同号求差

在这里插入图片描述

        求和时:数值位想加,和的符号取被加数(被减数)符号
            若最高位产生进位,则结果有溢出
        求差时:被加数(被减数)与加数(减数)求补后相加
            最高数值位有进位,相加结果为正,数值位正确;符号取被加数(被减数)的符号
            最高数值位无进位,相加结果为负,得到数值位的补码,需对结果求补还原为绝对值形式的数值位;符号位与被加数(被减数)的符号相反
        例:

在这里插入图片描述

定点运算—标准移码加减
    符号位和数值部分一起处理

在这里插入图片描述

        两数移码的加减等于两数加减后表示成的补码
    补码和移码:符号位相反、数值位相同
    移码加减规则

在这里插入图片描述

        溢出判断
            进行模2^n相加时,如果两个加数与和数符号全相同,则发生了溢出
            例:

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

定点运算—原码一位乘法1(乘法原理)
    原码乘法→部分积累加、移位
        例:

在这里插入图片描述

    手工运算

在这里插入图片描述

乘法原理
    每次将1位乘数所对应的部分积与原部分积的累加和相加,并移位
    设置寄存器
        A:存放部分积累加和、乘积高位
        B:存放被乘数
        C:存放乘数、乘积低位
    设置初值
        A:00.0000
        B:|X| = 00.1101
        C:|Y| =      .1011
    操作

在这里插入图片描述

定点运算—原码一位乘法2
    算法流程

在这里插入图片描述

    32位硬件逻辑方案

在这里插入图片描述

定点运算—补码一位乘法
    Booth(比较法)

在这里插入图片描述

    例:

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

定点运算—补码除法(不恢复余数)
    算法思想(|X|<|Y|)
        被除数X补、除数Y补、余数ri,i=0、1……
        初始化
            令r0 = X补,比较r0与Y补符号,同号上商1,异号上商0
        循环
            i=1……n,按下表条件决定每步操作

在这里插入图片描述

        商修正
            符号位+1,末尾恒置1
        余数修正:

在这里插入图片描述

        例:

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

浮点运算—阶码的加减(非标准移码)
    阶码用非标准移码表示(仅偏移2^(n-1)-1 = 127)

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

    例:

在这里插入图片描述

浮点数运算—IEEE加减1(算法原理)

在这里插入图片描述

        检测能否简化操作

在这里插入图片描述

        计算阶差
        对阶

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

        尾数加减

在这里插入图片描述

        结果规范化

在这里插入图片描述

    溢出判断
        左规(阶码-1)时
            左规时:先判断阶码是否全0,若是,则直接置阶码下溢;否则,阶码减1后判断阶码是否为全0,若是,则阶码下溢
        右规(阶码+1)时
            右规时:先判断阶码是否全1,若是,则直接置阶码上溢;否则,阶码加1后判断阶码是否为全1,若是,则阶码上溢
浮点数运算—IEEE754加减2(运算举例)
    例:

在这里插入图片描述

浮点数运算—IEEE754乘除
    浮点乘法→分解成:移码加法、原码乘法

在这里插入图片描述

    运算步骤
        求阶和AE+BE
        尾数相乘
        结果规格化。不需左规,最多右规1次
        其他处理
            舍入、置0、阶码溢出判断
    浮点除法→分解成:移码减法、原码除法

在这里插入图片描述

    运算步骤
        求阶差AE-BE
        尾数相除
        结果规格化。不需右规,最多左规1次
        其他处理
            舍入、置0、阶码溢出判断
奇偶校验
    编码规则
        增设1位校验位,从而使1的个数是奇或偶数
        例:

在这里插入图片描述

    偶校验电路逻辑

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

海明校验
    是一种多重分组奇偶校验;将代码组织为若干分组,每组进行奇偶校验
    能够检验是否出错,也能定位出错位
    例:

在这里插入图片描述

    海明编码时:各组单独进行奇偶校验编码,以确定各组的校验位
    代码检验时:每组能产生1个指误码
        r位指误码 :G3G2G1G0
        2^r种可能的指误码:0000、0001、0010
        指误码全为0==海明编码无错
        其余(2^r-1)种指误代码
            分别用于指示(2^r-1)种只有1位错的情况
    各参数应满足

在这里插入图片描述

        若K = 4,则r ≥ 3 满足上述定理,可组成7位海明码
    分组方法
        有效信息:A1A2A3A4,校验位:P1P2P3,偶校验方式

在这里插入图片描述

    编码规则
        每组均采用偶校验,填入校验位,组内具有偶数个1
        例:

在这里插入图片描述

    检错与纠错
        例:

在这里插入图片描述

循环冗余校验-编码方法
    校验原理
        用待校验数据除以某个约定代码,能除尽则表明数据正确,否则通过循环移位校正出错位
    编码方法
        将待编码的k位有效数据M(x)左移r位得到全编码多项式M(x)·x^r,空出r位,以装填r位余数
        选取一个r+1位的生成多项式G(x),对M(x)·x^r进行模2除运算,得到商Q(x)和余数R(x)的代码
        将左移r位的待编码信息,与余数R(x)模2加,可拼接成为包含有效数据在内的CRC编码
        例:

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

    生成多项式G(x)的说明
        不同的G(x),产生不同的余数特性
            G(x)的最高位和最低位必须为1
            CRC码中任何1位出错,根据G(x)得到的余数不为全0
            不同数位发生错误,G(x)得到的余数互不相同
            余数继续做模2运算,应能使余数循环出现
    补充

在这里插入图片描述

循环冗余校验—余数特征
    CRC余数的特性分析(最多1位出错)
        例:

在这里插入图片描述

    CRC余数特性归纳
        最多有1位数据出错时
            余数为全0时,数据无错
            余数非全0时,数据有错,且余数与出错位存在“一一对应”关系,余数001对应最低位出错的模式
            相邻两个非0余数,对应的出错位也相邻
            任何一个非0余数,循环执行余数低位补0应重新计算余数,余数会循环出现,对应的出错位也在随之循环左移,循环周期T=2^r-1
 循环冗余校验—循环纠错
    CRC的检错和纠错

在这里插入图片描述

    例:

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

    纠错方法的特点

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值