计算机组成原理——篇三
文章目录
- 导学
- 进制运算
- 二进制表示
- 二进制数据
- 有符号/无符号
- 表示法
- 二进制运算
- 表示
- 运算
- 小结
导学
- 这一篇主要介绍数据运算
进制运算
- 进位制是一种计数方式,也称进位计数法
- 使用的数字符号的数目称为此进制的基数或底数,例如十进制0~9
- 常见的还有二进制、八进制、十六进制(都是计算机喜欢的)
二进制表示
- 看下面两个例子:
- 注意是从0开始的
- 二进制转十进制:按权展开法
- 和上面的例子类似,基数的幂按位相乘再相加
- 小数同理:从-1开始
- 和上面的例子类似,基数的幂按位相乘再相加
- 十进制转二进制:重复相除法,除2取余
- 对小数,则要用重复相乘法:乘2取整
- 对小数,则要用重复相乘法:乘2取整
二进制数据
- 有符号数、无符号数,反码/原码/补码
有符号/无符号
- 有符号数:用0表示正,1表示负
- 无符号数:没有符号位,可视为非负数
表示法
- 二进制的原码表示:
- 十进制转成二进制后即是有符号源码
- 这样表示有两个问题:0有两种
00
和10
即+0和-0 - 两个符号不同的操作数运算尤其复杂
- 补码表示法
- 由于原码不好用,于是出现了正数代替负数、加法代替减法的补码
- 但是,注意,我们这里先看如何表示,不要关注运算!如果想提前理解:推荐链接
- 补码定义:
- 乍一看挺难过的吧?没事,看个例子:最前面的是符号位
- 这里的n为什么是4?这个公式的原理是什么?在运算部分解释
- 反码表示法
- 为了进一步揭示规律,方便后面的运算,引入反码:
- 还是看个例子,套用公式:
- 为了进一步揭示规律,方便后面的运算,引入反码:
- 总结一下,直接上结论:
- 正数三同(原补反相同)
- 负数:
- 原码—>补码:符号位不变,取反+1
- 原码—>反码:符号位不变,取反
- 反码—>补码:+1
- 以上皆是整数,对于小数,我们主要看补码表示法
- 小数反码定义:
- 看个例子:
- 小数反码定义:
二进制运算
- 定点数、浮点数和运算
- 首先,不要混乱;
- 前面是整数和小数的表示问题
- 这的定点数和浮点数都包括了整数和小数,都是针对运算提出的概念;但二者适用场景不同
- 这里解决前面的问题,为什么补码能够简化运算,也要考虑计算机如何存储并计算
表示
- 定点数的表示:
- 小数点固定在某个位置的数
- 看个例子:
- 如果不是纯的呢?需要乘上比例因子满足格式:
- 小数点固定在某个位置的数
- 浮点数的表示
- 有的数据范围很大,定点数难以表达
- 借助于科学计数法理解浮点数的表示格式:
- 这里的
r
一般取2 - 尾数必须是纯小数
- 这里的
- 看个例子:
- 注:阶码数值是二进制表示
- 浮点数的表示范围:
- 根据上面的范围,得到上溢和下溢区间:
- 单精度浮点数:4字节表示,即总共有32比特位存储这些阶码、尾数、符号
- 双精度浮点数:8字节表示(double)
- 后面会介绍溢出处理(要考)
- 规格化
- 先来看科学计数法的要求:
- 类比之,浮点数要求尾数最高位必须为1,且纯小数,观察下面的例子:
- 规格化时,根据浮点数的组成对号入座,无需将符号位加入尾数和阶码,数值不够补0
- 浮点数必须要规格化后才能参与运算,一般流程:十进制数—>原码—>规格化
- 后面会发现,尾数用补码运算
- 先来看科学计数法的要求:
- 对比
- 浮点数在范围、精度、溢出处理、编程等方面优于定点数
- 定点数在运算规则、成本、速度等方面优于浮点数
运算
- 定点数加法
- 规则如下:
- 数值位和符号位一起计算,并将产生的进位丢掉
- 看两个例子:
- 关键:符号位参与运算
- 用双符号位法判断溢出:进位同样丢弃,符号相异表示溢出
- 规则如下:
- 定点数减法
- 减法变加法:
- 看个例子:
- 补码的相反数:连同符号位,取反+1
- 减法变加法:
- 浮点数加减法
- 和浮点数的表示类似,有具体的步骤规则:
- 对阶:阶码按小阶看齐大阶的原则:
- 舍弃最后两位,这个舍的问题后面会细说
- 尾数用补码运算,原码表示;当然,补码表示也可!
- 尾数求和:
- 尾数规格化:
- 左规:不满足下面的格式时
- 左规可能进行多次(多次移位)
- 上面的例子不满足格式,左规如下:
- 右规:双符号位不一致时,进行右移操作(只一次),需要考虑舍入问题:
- 小结:左移补0,右移补1/0(和剩下的符号位一致),阶码改变
- 左规:不满足下面的格式时
- 溢出判断:和定点数不同,浮点数双符号位不同不一定溢出,经过上面的尾数规格化之后根据阶码双符号位判断
- 阶码符号位一致则未溢出
- 和浮点数的表示类似,有具体的步骤规则:
- 浮点数运算小结:
- 以上步骤都是程序化,总结如下:
- 以上步骤都是程序化,总结如下:
- 浮点数乘除法:(了解即可,考的很少)
- 乘法规则:阶码相加,尾数相乘
- 除法规则:阶码相减,尾数相除
- 同样可分为:阶码运算、尾数运算、尾数规格化、舍入和溢出判断
小结
- 本篇主要介绍了二进制的表示和运算,规则还是要记的
- 第一次接触很容易混乱,但把握住一点:任何表示方法主要是为了机器运算的方便,从这一点出发可能会更容易理解这些规则
- 对比存储器的结构便可知其中的原理,最后再解释一下补码的道理:
- 以-11为例,先不考虑符号,二进制表示为1011,逐位求反得0100
- 1011+0100=1111,而1111+1=10000(4位二进制数的模)
- 相当于4位寄存器,最大能表示的数是15,此时+1就要全部清零进位
- 结论:不管几位二进制数,取反后与原码相加再+1都会得到模
- OK,补码代替原码计算,减法变加法,会溢出,模掉溢出部分就可以得到最终计算值,这就是底层原理
- 可以将它理解成一个时钟,用模运算来轮回转化
- 再来考虑符号位,结论是:符号位是计算过程中得到的规律(0表正,1表负),可以当成是数学之美吧!
- 下一篇开始实现之前提到的重要算法
计算机组成原理——篇三相关推荐
- (计算机组成原理)第三章存储系统-第六节4:Cache的写策略(写回法和全写法,写分配法和非写分配法)
文章目录 一:写命中 (1)写回法(write-back) (2)全写法(write-through) 二:写不命中 (1)写分配法(write-allocate) (2)非写分配法(not-writ ...
- 合肥学院计算机原理,合肥学院计算机组成原理实验三-20210415130709.docx-原创力文档...
精品文档 精品文档 PAGE 精品文档 合肥学院计算机组成原理实验三 --------------------------------作者:------------------------------ ...
- 计算机组成原理译码器选择,计算机组成原理第三章习题参考解析.doc
计算机组成原理第三章习题参考解析 第3章习题参考答案 1.设有一个具有20位地址和32位字长的存储器,问 (1) 该存储器能存储多少字节的信息? (2) 如果存储器由512K×8位SRAM芯片组成,需 ...
- 计算机组成原lta,计算机组成原理实验三运算器
<计算机组成原理实验三运算器>由会员分享,可在线阅读,更多相关<计算机组成原理实验三运算器(11页珍藏版)>请在人人文库网上搜索. 1.实验三:八位运算器组成实验一:实验目的: ...
- 计算机组成原理实验三报告,计算机组成原理实验三报告
计算机组成原理实验三报告 实 验 报 告 三课 程 计算机组成原理 姓 名 学 号实验项目 存储器实验 同组姓名 学 号指导教师 专业班级 计算机科学与技术 09 实验时间 2011-6-6实验三 存 ...
- 计算机组成原理实验写出下列微指令编码,计算机组成原理实验三.doc
计算机组成原理实验三.doc (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 上海大学 计算机学院评分<计算机组成原理实验> ...
- 【计算机组成原理】计算机组成原理(三)
计算机组成原理(三) 奇偶校验码: 校验原理: 2个比特位可以映射出4种合法的情况 2的2次方 3个比特位可以映射出8种不同的情况,其中4种为合法情况,另外4种为非法情况 上图的每个编码都是一个码字 ...
- 计算机组成原理微控器功能,(计算机组成原理)实验三微控器实验.ppt
文档介绍: 计算机组成原理课程设计 实验三.微控器实验 葛扩院廖萝丽斯节宽裔萌宛敢蜘祭癌颂导罪仍囚誓棋尹侈速爹详凑移悸董(计算机组成原理)实验三微控器实验(计算机组成原理)实验三微控器实验 实验三微控 ...
- 东北大学计算机组成实验报告,东北大学计算机组成原理实验三
东北大学计算机组成原理实验三Tag内容描述: 1.计算机组成原理复习资料 第一章知识总结 冯诺伊曼结构是一种将程序指令存储器和数据存储器合并在一起的存储结构,程序指令存储地址和数据存储地址指向同一个存 ...
最新文章
- ORM的概念, ORM到底是什么
- 遇到了urlrewriter的:无法使用前导.. 在顶级目录上退出问题
- 详解linux下安装python3环境
- wincc上位机与1200组态步骤_组态上位机WINCC与PLC通讯连接
- 基于JAVA+SpringMVC+Mybatis+MYSQL的企业人事管理系统
- HDU 1195 Open the Lock BFS
- 华为路由器isis配置实例_华为isis协议配置实例
- 破解WEP无线网络WLAN全攻略
- 实验01 使用网络协议分析仪Wireshark
- 谷歌浏览器不能上网问题
- 零基础学习CANoe Panel(17)—— Panel CAPL Function
- 将子网掩码取反_IP地址、子网掩码详解
- 某大厂程序员吐槽外包员工是大爷
- VS 2010错误提醒: 必需属性“VSInstallDir”缺失或为空 以及 error MSB8008
- PyQt5实战之二维码生成器(一):基本界面设计
- 目标检测算法DSSD的原理详解
- Java实战之管家婆记账系统(8)——添加账目界面及功能实现
- MATLAB傅里叶级数分解极其图像
- BIOS实战之读写逻辑设备(SIO)
- (五)arm裸机开发---主频和时钟配置
热门文章
- 阿里云服务器使用体验
- R里面的ls()和rm(list=ls())是什么意思?
- 北大和人大两年整理出来的书单(经济&管理&商业)
- 你有对象了吗?论程序员最喜欢哪种职业的女朋友
- 字典中items = list(counts.items()) 和 items = list(counts) 的区别
- MPLS TE技术介绍
- AndroidApp学习笔记
- mysql安装包含哪几种文件_MySQL安装详解
- 解决java前台传递时间到后台相差8个小时的时区问题
- 一季度理赔报告显示,恶性肿瘤仍为主要风险,年金险、终身寿险备受青睐 | 美通社头条...