【重学计算机】计组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)结果规格化
最新文章
- 数据库中的two phase locking
- PopupWindowAction breaking MEF import?
- PHP浮点数计算
- DALSA Coreco - 图像处理软件(Sapera LT )
- Hive(一):架构及知识体系
- 写实例学习html5 WebSocket
- Java中的异常处理机制的简单原理和应用
- [五]JFreeChart实践四之直线图
- 更改xcode上iphone模拟器颜色的方法--备用
- E - 归并排序 求逆序数
- Arduino 时钟模块(clock module) DS1306
- [UWP小白日记-7]转换MVA学院的XML字幕为SRT (二)
- 手机自动化测试:Appium源码之api(1)
- Redhat系统上开启Telnet服务
- python3-深浅copy
- 【Python】基础知识
- 下载一个新的app之后,如果分析、鉴赏?
- 大数据入门第十二天——azkaban入门
- Maven常用指令
- 【CTF MISC】文件内容反转方法-2017世安杯CTF writeup详解
热门文章
- SpringCloud实战8-Bus消息总线
- heartbeat.go
- 磁盘IOPS计算与测量
- Spring事务(一) Markdown 版
- hydra暴力破解ssh服务器密码
- eShopOnContainers 知多少[8]:Ordering microservice
- nodeJs的nodemailer发邮件报错hostname/IP doesn't match certificate's altnames怎么解决?
- Mybatis之旅第六篇-关联查询
- Windows下安装tesserocr
- WebGL three.js学习笔记 创建three.js代码的基本框架