第二章 计算机的运算方法

  • 一、数制、编码和3种校验码
    • 1. 数制
    • 2. 进制转换
      • 2.1 任意进制十进制
        • 2.1.1 任何进制转为十进制
        • 2.1.2 十进制转为任何进制
      • 2.2 2的次方之间的转换
        • 2.2.1 二进制转为四、八、十六进制
        • 2.2.2 四、八、十六进制转二进制
      • 2.3 真值和机器数
    • 3. BCD码(Binary-Coded Decimal)
      • 3.1 8421码的映射关系(BCD码的一种映射方案:8421码)
      • 3.2 余3码=8421码+0011
      • 3.3 2421码:改变权值定义
    • 4.字符与字符串
      • 4.1 ASCII码
      • 4.2 字符串
      • 4.3 GB2312-80:汉字+各种符号共7445个
    • 5. 校验原理
      • 5.1 校验原理简介
      • 5.2 奇偶校验
      • 5.3 海明校验码(详见:计算机网络)
      • 5.4 循环冗余校验码
  • 二、定点数的表示与运算
    • 1. 定点数的表示
      • 1.1 无符号数
      • 1.2 有符号数
        • 1.2.1 定点小数
        • 1.2.2 定点整数
        • 1.2.3 原码
        • 1.2.4 补码
        • 1.2.5 反码
        • 1.2.6 原补反相互转换
        • 1.2.7 移码
    • 2. 定点数的运算
      • 2.1 移位运算
        • 2.1.1 机器数采用无符号数:逻辑移位
        • 2.1.2 机器数采用有符号数:算数移位
          • 2.1.2.1 原码算数移位
          • 2.1.2.2 补码算数移位
          • 2.1.2.3 反码算数移位
          • 2.1.2.4 原、补、反移位总结
        • 2.1.3 循环移位
      • 2.2 加减运算
      • 2.3 溢出判断
        • 2.3.1 正溢出(上溢出)和负溢出(下溢出)
        • 2.3.2 判断方法1:采用一位符号位
        • 2.3.3 判断方法2:采用一位符号位,根据数据位进位情况判断溢出
        • 2.3.4 判断方法3:采用双符号位(在计算机的设计中常使用)
          • 2.3.3.1 双符号位
      • 2.4 乘法运算
        • 2.4.1 原码一位乘法
        • 2.4.2 补码一位运算(Booth算法)
        • 2.4.3 总结
      • 2.5 强制类型转换
        • 2.5.1 无符号数与有符号数转换
        • 2.5.2 长数据类型转化为短数据类型
        • 2.5.3 短数据类型转化为长数据类型
      • 2.6 除法运算
        • 2.6.1 原码恢复余数法
        • 2.5.2 不恢复余数法(原码加减交替法)
        • 2.5.2 补码加减交替法
        • 2.5.4 除法运算总结回顾
  • 三、浮点数的表示与运算
    • 1. 浮点数的表示
      • 1.1 基本格式
      • 1.2 规格化
        • 1.2.1 左规
        • 1.2.2 右规
        • 1.2.3 规格化浮点数的特点
        • 1.2.4 表示范围
      • 1.3 IEEE754标准(重点)
        • 1.3.1 几个注意点:
        • 1.3.2 其他规定规定:
        • 1.3.3 IEEE754的取值范围(正常范围内分析,即:1<=E<=254)
    • 2. 浮点数的运算
      • 2.1 加减运算
        • 2.1.1 步骤:
      • 2.2 浮点数的强制类型转换
        • 2.2.1 无损类型转换
        • 2.2.2 无符号数和有符号数
        • 2.2.3 int<-->float的精度和表示范围
  • 四、算术逻辑单元设计
    • 1. ALU
      • 1.1 功能
      • 1.2 基本结构
      • 1.3 逻辑符号:
        • 1.3.1 基本逻辑符号:与、或、非
        • 1.3.2 复合逻辑符号:与非、或非、异或、同或
    • 2. 加法器(ALU核心部件)
      • 2.1 一位全加器
      • 2.2 串行加法器
      • 2.3 并行加法器
        • 2.3.1 进位产生原理
        • 2.3.2 串行进位
        • 2.3.3 并行进位
        • 2.3.4 ALU芯片的组织

一、数制、编码和3种校验码

1. 数制

  • 一进制
  • 二进制:计算机选择二进制,方便对应到物理器件的状态,高电平、低电平
  • 四进制
  • 八进制
  • 十进制
  • 十六进制
    基数:每个数位所用到的不同符号的个数

2. 进制转换

2.1 任意进制十进制

2.1.1 任何进制转为十进制

2.1.2 十进制转为任何进制

整数部分采用除基岛取余法,小数部分采用乘基顺曲整法

2.2 2的次方之间的转换

2.2.1 二进制转为四、八、十六进制

n位一组

2.2.2 四、八、十六进制转二进制

把每一位数转为对应的二进制。

2.3 真值和机器数

3. BCD码(Binary-Coded Decimal)

二进制:方便计算机处理
十进制:符合人类习惯
快速转换:一一对应

3.1 8421码的映射关系(BCD码的一种映射方案:8421码)

0 1 2 3 4 5 6 7 8 9
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001

进行加法时,如果有进位需要+0110进行修正
例如:
5+8=13 即 0101+1000=1101,应该+0110变成1 0011才能正确表示13

3.2 余3码=8421码+0011

0 1 2 3 4 5 6 7 8 9
0011 0100 0101 0110 0111 1000 1001 1010 1011 1100

3.3 2421码:改变权值定义

前面五个数不准使用高位权值为2的位,后五个数必须使用高位权值为2的位,刚好头尾互补

0 1 2 3 4 5 6 7 8 9
0000 0001 0010 0011 0100 1011 1100 1101 1110 1111

4.字符与字符串

4.1 ASCII码

数字、字母、符号—>共128个字符—>7位二进制编码—>ASCII码
数字、字母、符号与编码一一对应需要一个码表,即ASCII码表

项目 Value
可印刷字符 32-126
数字 48-57
大写字母 65-90
小写字母 97-122

4.2 字符串

多个ASCII码拼接

  • 大端模式:一个存储单元内先存储高位字节、后存储低位字节
  • 小端模式:一个存储单元内先存储低位字节、后存储高位字节

4.3 GB2312-80:汉字+各种符号共7445个

  • 区位码:94个区,每区94个位置
  • 国标码=区码+20H,位码+20H
  • 汉字机内码=国标码+80H

5. 校验原理

5.1 校验原理简介

5.2 奇偶校验

  • 奇校验码:整个校验码(有效信息位和校验位)中“1"的个数为奇数。
  • 偶校验码:整个校验码(有效信息位和校验位)中“1”的个数为偶数。

5.3 海明校验码(详见:计算机网络)

  1. 确定海明码的位数:2^k>=n+k+1
  2. 确定海明码的分布 2的n-1次方
  3. 求校验位的值
    Pn等于其二进制位为1的那一位的所有数异或的值
  4. 海明码的纠错原理
    Pn与对应的进行异或得出Sn,错误的位置就是Pn…P1

5.4 循环冗余校验码

K位信息码和R位校验码拼接而成,信息码在前,校验码在后
只需要掌握循环冗余校验码的求解过程即可
例如:设生成多项式为G(x)=x3+x2+1,信息码为101001,求对应的CRC码。

  1. 确认K、R,以及生成多项式独对应的二进制码
    K=信息码的长度=6
    R=生成多项式最高次幂=3
    校验码位数N=K+R=9
    生成多项式对应的二进制码:1101

  2. 移位
    信息码左移R位,低位补0

  3. 做模二除法

对移位后的信息码,用生成多项式进行模二除法,产生余数,余数就是校验码
模二除法要点(两个要点)
1.上商时直接看被减数的最高位,如果是1,则上1,如果是0,则上0
2.做减法时,直接做按位旳异或,不需要借位
模二除法示例:

  1. 检错和纠错

对传输过来的编码以生成多项式为除数进行模二除法,如果余数为0,代表没错
余数是多少,将它转化为十进制,则表示多少位出错
要达到这样的效果,需要选择好的生成多项式(生成多项式设计比较难)
2.2 定点数的表示与运算

二、定点数的表示与运算

1. 定点数的表示

1.1 无符号数

无符号数:整个机器字长的全部二进制位均为数值位,没有符号位,相当于数的绝对值
表示范围 0-2**n -1

1.2 有符号数

1.2.1 定点小数

小数点:隐含存储
有n位尾数的定点小数
表示范围 -(1-2**(-n))-1-2**(-n)

1.2.2 定点整数

表示范围 -(2n -1)-2n -1

1.2.3 原码

1.2.4 补码

一个数的补码:正数不变,负数符号位不变,数值位取反加1
已知一个数的补码,求该数的相反数的补码:(怎么证明?)
连同符号位一起取反加1

1.2.5 反码

正数:反码与原码相同
负数:原码符号位不变,数值部分按位取反(此规则同样适用于由反码转化为原码)

1.2.6 原补反相互转换

1.2.7 移码

移码就是在真值x上减去一个常数(偏置值),通常这个常数取2^n,
n是真值x的位数,不是移码的位数,是不加符号位的位数
移码与补码的取值范围相同
移码与补码可以转换

  • 当移码的符号位是0时,补码的符号位是1

  • 当移码的符号位是1时,补码的符号位是0
    原码补码相互转换

  • 原码加上2**n得到移码

  • 移码减去2**n得到原码

2. 定点数的运算

2.1 移位运算

r表示基数
右移n位:除以rn;左移n位:乘以rn

2.1.1 机器数采用无符号数:逻辑移位

  • 逻辑左移,高位丢失,低位填0
  • 逻辑右移,低位丢失,高位填0

2.1.2 机器数采用有符号数:算数移位

符号位不参与移位

2.1.2.1 原码算数移位
  • 左移、右移都补0
  • 左移丢1:出错;右移丢1,影响精度
2.1.2.2 补码算数移位
  • 正数:左移右移都补0
  • 负数:左移补0,右移补1
2.1.2.3 反码算数移位
  • 正数:左移右移都补0
  • 负数:左移右移都补1
2.1.2.4 原、补、反移位总结

2.1.3 循环移位

2.2 加减运算

  • [A+B]补=[A]补+[B]补
  • [A-B]补=[A]补+[-B]补
  • [-B]补与[B]补的关系,连同符号位按位取反后加一

2.3 溢出判断

2.3.1 正溢出(上溢出)和负溢出(下溢出)

  • 正溢出:两个正数相加变成了负数
  • 负溢出:两个负数相加变成了正数

2.3.2 判断方法1:采用一位符号位

2.3.3 判断方法2:采用一位符号位,根据数据位进位情况判断溢出

2.3.4 判断方法3:采用双符号位(在计算机的设计中常使用)

2.3.3.1 双符号位
  1. 采用双符号位的移位运算:低位符号位参与移位,高位符号位代表真正的符号
  2. 双符号位实际存储时,只存储一个符号位,这是因为存在存储器中的数字,先保证了它是一个正常的数字,不是溢出的情况
  3. 在需要运算的时候,是会把符号位并行地送到用于存储符号位的两个存储单元中

2.4 乘法运算

2.4.1 原码一位乘法

符号位与数值位分开处理,符号位通过异或运算获得结果

  • ACC:存放乘积高位
  • MQ:存放乘数、乘积低位
  • X:存放被乘数

ACC一开始为00000,MQ为y,y的最低位乘x所得的值更新进ACC,然后右移一位,以此类推直到y全部移除MQ
原码一位乘法示例(以纯小数为例)

2.4.2 补码一位运算(Booth算法)

ACC一开始为00000,MQ为y末尾加个0,根据MQ的最低两位判断操作,以此类推直到y全部移出在MQ的最后两位之内,求得的补码既是结果。

2.4.3 总结

2.5 强制类型转换

2.5.1 无符号数与有符号数转换

不改变数据内容,只改变解释方式
比如有符号数,1110 1111 0001 1111是[-4321]补

   short x=-4321;  //在计算机中存储的二进制为1110 1111 0001 1111unsigned short y=(unsigned short)x;  //在计算机中的存储内容不变还是1110 1111 0001 1111,但是解释方式发生改变解释为无符号数61215

2.5.2 长数据类型转化为短数据类型

高位截断,保留低位

2.5.3 短数据类型转化为长数据类型

填充高位 不会影响真值
写程序的时候,要避免前两种数据转换

2.6 除法运算

2.6.1 原码恢复余数法

计算机进行控制的时候,使用一个计数器记录左移和上商的次数
左移和上商的次数是固定的,中间需要恢复的次数是没有办法预计的
这样的话使用计数器来控制,会产生麻烦

  • ACC:被除数,余数
  • MQ:商
  • X:余数

n是数值的位数
先x+[-|y|]补,结果为正数上商1,反之上商0,若上商0需将结果加回[|y|]补,结果左移一位继续上述的操作,直至商满足要求
左移n次,上商n+1次
原码恢复余数法示例

2.5.2 不恢复余数法(原码加减交替法)

把恢复过程穿插到上商过程中
先x+[-|y|]补,结果为正数上商1,反之上商0,若上商1,将结果左移一位在加上[-|y|]补,若上商0,将结果左移一位在加上[|y|]补,继续上述的操作,直至商满足要求


2.5.2 补码加减交替法

2.5.4 除法运算总结回顾

三、浮点数的表示与运算

1. 浮点数的表示

1.1 基本格式

1.2 规格化

规定尾数的最高数位必须是一个有效值

1.2.1 左规

当浮点数运算的结果为非规格化时,要进行规格化处理
将尾数左移一位,阶码-1(基数为2时)

1.2.2 右规

当浮点数运算结果尾数出现溢出(双符号位为01或10)时,
将尾数右移一位,阶码+1(基数为2时)

1.2.3 规格化浮点数的特点

1.2.4 表示范围

负数上溢和正数下溢可以当做机器0(阶码部分负溢出)
![.](https://img-blog.csdnimg.cn/20210111161840292.png)

1.3 IEEE754标准(重点)

1.3.1 几个注意点:

  • 阶码用移码表示,不需要阶符
  • 尾数中有一个隐藏表示的最高位1
  • 因为有这个隐藏的最高位1,故阶码用移码表示时的偏置量与一般的移码的偏置量不同
    需要一般移码的偏置量-1后,即可得到此标准的移码的偏置量即:标准的移码的偏置量=一般移码的偏置量-1
  • 临时浮点数基本不会考,看一下就行

1.3.2 其他规定规定:

通过这些规定,此标准就可以表示正无穷、负无穷、0还有NAN

1.3.3 IEEE754的取值范围(正常范围内分析,即:1<=E<=254)

2. 浮点数的运算

2.1 加减运算

2.1.1 步骤:

  1. 转换格式
  2. 对阶
  3. 尾数加减
  4. 规格化 规格化之前的溢出不是真溢出,规格化之后还溢出才是真溢出
  5. 舍入
    ”0“舍”1“入法
    恒置“1”法
  6. 溢出判断
    阶码上溢:需要进行中断处理
    阶码下溢:按机器0处理

示例:

2.2 浮点数的强制类型转换

2.2.1 无损类型转换

  • char -> int -> long -> double
  • float -> double

2.2.2 无符号数和有符号数

2.2.3 int<–>float的精度和表示范围

  • int -> float:可能损失精度
  • float -> int;可能溢出及损失精度

四、算术逻辑单元设计

1. ALU

运算器=PSW+X+ALU+ACC+MQ(运算器五大部件,ALU是核心部件)

1.1 功能

  • 算数运算:加、减、乘、除等
  • 逻辑运算:与、或、非、异或等
  • 辅助功能:移位、求补等

1.2 基本结构

逻辑结构示意图和实例结构示意图

1.3 逻辑符号:

1.3.1 基本逻辑符号:与、或、非

1.3.2 复合逻辑符号:与非、或非、异或、同或

2. 加法器(ALU核心部件)

2.1 一位全加器

2.2 串行加法器

2.3 并行加法器

2.3.1 进位产生原理

2.3.2 串行进位

速度没有比串行加法器高多少 也叫行波进位加法器

2.3.3 并行进位

单级先行进位方式,又称为组内进位、组间串行进位方式
多级先行进位方式,又称为组内并行、组间并行进位方式(层次化设计

2.3.4 ALU芯片的组织

第二章 计算机的运算方法相关推荐

  1. 计算机组成原理知识点总结(第3篇 第6章 计算机的运算方法)

    基于计算机组成原理(第2版)唐朔飞编著 第6章 计算机的运算方法 计算机中的数均放在寄存器中,通常称寄存器的位数为机器字长. 原码表示法: "0"表示+号,"1" ...

  2. 计算机组成原理学习(哈工大视频)第六章 计算机的运算方法

    计算机中数的表示:在计算机中,能够被硬件直接识别和处理 计算机的运算方法 运算器的设计 6.1无符号数和有符号数 6.1.1无符号数 寄存器的位数,反应了无符号数的表示范围:8位的寄存器,表示范围为0 ...

  3. 计算机组成原理---第二章运算器和运算方法

    一.数据与文字的表示方法 (1) 数据格式 (1) 定点数的表示方法 假设用一个 n+1 位的字来表示一个定点数 x,xn 放在最左位置,并用数值 0 和 1 分别代表正号和负号,其余位数代表它的量值 ...

  4. 计组第六章——计算机的运算方法重点总结

    目录: 1.原码.反码.补码.移码 2.浮点与定点表示 3.加减法运算 4.原码乘法 5.补码乘法 6.除法运算 7.浮点数运算 8.算术逻辑运算单元 1.原码.反码.补码.移码 1.1机器字长 1. ...

  5. 计算机组成原理唐朔飞第六章知识点总结,计算机组成原理(唐朔飞)教材笔记 第六章 计算机的运算方法...

    1. 把符号"数字化"的数成为机器数,而把带"+"或"-"符号的数称为真值: 2. 原码表示法,约定整数的符号位与数值位之间用逗号分隔,小数 ...

  6. 第6章 计算机的运算方法

    6.1无符号数和有符号数 6.1.1无符号数 寄存器位数反映无符号数的表示范围 6.1.2有符号数 1.机器数与真值 真值:带符号的数 机器数:符号数字化的数 2.原码表示法 ①整数 [x]原是n+1 ...

  7. 计算机组成原理(第三版)唐朔飞-第六章计算机的运算方法-课后习题(1-16)

    目录 第六章 1.最少用几位二进制数即可表示任一五位长的十进制正整数? 2.已知 X = 0. a 1 a 2 a 3 a 4 a 5 a 6 ( a i 为 0 或 1 ) X=0.a_1a_2a_ ...

  8. 预习计算机组成原理之计算机的运算方法——笔记4

    系列文章目录 第六章--计算机的运算方法 文章目录 系列文章目录 前言 一.无符号数和有符号数 1.1 无符号数 1.2 有符号数 1.2.1 机器数与真值 1.2.2 原码表示法 (考试的时候注意写 ...

  9. 计算机的运算方法(中)测试

    第6章 计算机的运算方法(中)测试 1 单选(1分) 为了提高浮点数的表示精度,其尾数必须为规格化数,如果不是规格化数,就要通过修改阶码并同时左移或右移尾数的办法使其变为规格化数.0.00110101 ...

  10. 计算机组成原理-第二章 数据表示与运算

    计算机组成原理-第二章 数据表示与运算 一.数据的表示 1.数值型数据的表示(重点难点) 1.1数值型数据的表示--进位制 1.2数值型数据表示-码制 1.3数值型数据的表示--定点数 1.4数值型数 ...

最新文章

  1. 面试高频题:Hash一致性算法是如何解决数据倾斜问题的?
  2. leetcode-36-有效的数独
  3. 电商大战折射商业伦理缺失形势探讨
  4. 找出所有层级_数轴上的行程问题1:你的数学思维水平在哪一个层级?
  5. 前端学习(2579):组件库使用
  6. 移动端设备常用尺寸笔记
  7. JS缺失错误- Uncaught SyntaxError: Unexpected token
  8. Linux系统管理_附加控制权限-Redhat Enterprise 5
  9. Ubuntu 15.04下安装Docker
  10. Android 获取网络链接类型
  11. 设计模式--代理模式Proxy(结构型)
  12. [BJOI2017]开车
  13. ftp协议是一种用于什么的协议_购房协议怎么写?签购房协议要注意什么
  14. Python数据分析之理论知识
  15. 如何在linux上下载各种常用安卓应用
  16. 软件体系结构测试定义,软件体系结构-中国大学mooc-题库零氪
  17. PMSG永磁同步发电机并网仿真模型
  18. 推荐七大写作利器,总有一款适合你
  19. dp2px px2dp
  20. 人生最不该挥霍的3样东西

热门文章

  1. Kotlinx.serialization VS Gson
  2. project项目管理软件の版本区别?
  3. 神雕外挂 神雕ol外挂 http://www.shaguayou.com
  4. java 动态定时提醒_java实现定时提醒功能
  5. STM32F103_study62_The punctual atoms(Clock system initialization function analysis)
  6. 老中医根治python编码问题2
  7. 【SEO网络推广】会被百度K站的原因
  8. rockchip mpp编码开发
  9. 上传应用到苹果一直卡住验证中(authentication with the app store)问题解决
  10. 虎胆龙威5java7723,汉米尔顿腕表联手《虎胆龙威5》再度演绎热血豪情