【重学计算机】计组D3章:运算方法与运算器

1. 定点数运算及溢出

定点数加减法:减法化加法,用补码直接相加,忽略进位

溢出:运算结果超出了某种数据类型的表示范围

溢出检测方法:统一思想概括为正正得负或负负得正则溢出,正负或负正不可能溢出

  方法1:V = XYS + XYS(XY为两个加数的符号位,S为结果的符号位,_表示非),那么V = 1则为溢出

  方法2:V = C0 ⊕ C1(C0是最高数据位产生的进位,C1是符号位产生的进位),那么V = 1则为溢出

  方法3:V = Xf1 ⊕ Xf2(数据采用变型补码 Xf1Xf2 X0X1X2X3...  )

PS:以上方法都是利用正正得负负负得正则溢出为出发点的电路设计

2. 补码一位乘法——Booth算法

[x·y] = [x]·( -y0+∑ yi2-i )

    = [x]·[ - y0 + y12-1 + y22-2 + … + yn2-n]

    = [x]·[ - y0 + (y1 - y12-1) + (y22-1 - y22-2) + … + (yn2-(n-1) - yn2-n)]

    = [x]·[(y1 - y0) + (y2 - y1) 2-1 + … + (yn - yn-1) 2-(n-1) + (0 - yn)2-n]

总结起来设计数字电路的规则就是:

  • 为00或者为11的时候,直接右移一位
  • 为01的时候,加x的补,然后右移一位
  • 为10的时候,加-x的补,然后右移一位

PS:其实第一行和最后一行都能设计数字电路,为什么要从第一个式子推到最后一个式子呢?原因有两点:

  1)二进制中如果有0,可以不进行运算

  2)如果有连续的1可以减少计算次数,比如 a * 001111100 = a * (010000000 - 0000000100)

所以每次判断 yn+1 - yn就可以减少计算次数了

参考:https://www.cnblogs.com/xisheng/p/9260861.html

3. 定点数除法 --- 略,没找到好的资料

4. 浮点数加减法

  (1)求阶差,阶码小的对齐大的

  (2)尾数加减

  (3)结果规格化

原文地址:https://www.cnblogs.com/flashsun/p/10356775.html

时间: 2024-10-12 08:04:31

【重学计算机】计组D3章:运算方法与运算器的相关文章

【重学计算机】机组D8章:输入输出系统

1. 输入输出系统概述 组成:外设.接口.总线.管理软件 基本功能 完成计算机内外的信息传递 保证CPU正确选择输出设备 利用缓冲等,实现主机与外设的速度匹配 特点:异步性.实时性.设备无关性 输入过程:CPU把地址值放入总线 --> CPU等候设备数据有效 --> CPU从总线读入数据存入寄存器 输出过程:CPU把地址值放入总线 --> CPU把数据值放入总线 --> 设备等数据有效取走数据 IO系统性能:存储IO.通信IO 连接特性:哪些设备可以和IO相连 IO系统容量:IO系

重学计算机组成原理(二)- 制定学习路线,攀登“性能”之巅

0 学习路线的知识点概括 学习计算机组成原理,就是学习计算机是如何协调运行的 计算机组成原理的英文叫Computer Organization Organization 意"组织机构". 该组织机构能够进行各种计算.控制.读取输入,进行输出,达成各种强大的功能. 把整个计算机组成原理的知识点拆分成了四大部分 计算机的基本组成 计算机的指令和计算 处理器设计 存储器和I/O设备. 0.1 计算机的基本组成 计算机的硬件组成 这些硬件,怎么对应到经典的冯·诺依曼体系结构的 除此之外,还需要

【重学计算机】计组D1章:计算机系统概论

1.冯诺依曼计算机组成 主机(cpu+内存),外设(输入设备+输出设备+外存),总线(地址总线+数据总线+控制总线) 2.计算机层次结构 应用程序-高级语言-汇编语言-操作系统-指令集架构层-微代码层-硬件逻辑层 3.计算机性能指标 非时间指标 [字长]机器一次能处理的二进制位数 ,常见的有32位或64位 [总线宽度]数据总线一次能并行处理的最大信息位数,一般指运算器与存储器之间的数据总线的位数 [主存容量]主存的大小 [存储带宽]单位时间内与主存交换的二进制位数 B/s 时间指标 [主频f]时

重学计算机组成原理(九)- 动态链接

把对应的不同文件内的代码段,合并到一起,成为最后的可执行文件 链接的方式,让我们在写代码的时候做到了"复用". 同样的功能代码只要写一次,然后提供给很多不同的程序进行链接就行了. "链接"其实有点儿像我们日常生活中的标准化.模块化生产. 有一个可以生产标准螺帽的生产线,就可生产很多不同的螺帽. 只要需要螺帽,都可以通过链接的方式,去复制一个出来,放到需要的地方 但是,如果我们有很多个程序都要通过装载器装载到内存里面,那里面链接好的同样的功能代码,也都需要再装载一遍,

重学计算机组成原理(十一)- 门电路的"千里传音"

人用纸和笔来做运算,都是用十进制,直接用十进制和我们最熟悉的符号不是最简单么? 为什么计算机里我们最终要选择二进制呢? 来看看,计算机在硬件层面究竟是怎么表示二进制的,你就会明白,为什么计算机会选择二进制. 1 怎么做到"千里传书" 马拉松的故事相信你听说过.公元前490年,在雅典附近的马拉松海边,发生了波斯和希腊之间的希波战争.雅典和斯巴达领导的希腊联军胜利之后,雅典飞毛腿菲迪皮德斯跑了历史上第一个马拉松,回雅典报喜.这个时候,人们在远距离报信的时候,采用的是派人跑腿,传口信或者送信

计算机组成原理(科学出版社) 第二章:运算方法和运算器

复习 20190630 一. 原码.补码.反码.移码 真值(十进制数) 转换为真值(二进制数)最好补全为八位,对应的原码就是将最高位写成符号位(还是八位) 具体思维导图如下: 原码求补码的简便方法:除符号位之外,从最低位开始,遇第一个1之前的各位保持不变,其余各位按位取反 进制之间的转换,思维导图如下: 二.补码加减法 补码加法公式:[X]补 + [Y]补 = [X+Y]补    (mod  2n+1) 定理:任意两数补码之和等于该两数之和的补码 2.  补码的乘法和除法就是将[X]的补码向左或

重学计算机组成原理(六)- 函数调用怎么突然Stack Overflow了!

用Google搜异常信息,肯定都访问过Stack Overflow网站 全球最大的程序员问答网站,名字来自于一个常见的报错,就是栈溢出(stack overflow) 从函数调用开始,在计算机指令层面函数间的相互调用是怎么实现的,以及什么情况下会发生栈溢出 1 栈的意义 先看一个简单的C程序 function.c 直接在Linux中使用GCC编译运行 [[email protected] Documents]$ vim function.c [[email protected] Document

重学计算机组成原理(十)- "烫烫烫"乱码的由来

程序 = 算法 + 数据结构 对应到计算机的组成原理(硬件层面) 算法 --- 各种计算机指令 数据结构 --- 二进制数据 计算机用0/1组成的二进制,来表示所有信息 程序指令用到的机器码,是使用二进制表示的 存储在内存里面的字符串.整数.浮点数也都是用二进制表示的 万物在计算机里都是0和1,搞清楚各种数据在二进制层面是怎么表示的,是我们的必修课. 在实际应用中最常遇到的问题,也就是文本字符串是怎么表示成二进制的,特别是我们会遇到的乱码究竟是怎么回事儿 在开发的时候,所说的Unicode和UT

《计算机组成原理》-读书笔记(二)运算方法和运算器

计算机中使用的数据可分为两大类: 符号数据:非数字 符号的表示(ASCII.汉字.图形等) 数值数据:数字数据的表示方法(定点.浮点)   计算机常用的数据表示格式有两种: 定点表示:小数点位置固定(可表示带符号或不带符号的纯小数.纯整数) 浮点表示:小数点位置不固定(IEEE754)   十进制数串的表示: 字符串形式 BCD(压缩) 编码方式     有权码:8421码.2421码.5211码     无权码:余三码.格雷码 自定义数据表示   数值的机器码表示:原码.反码.补码.移码