计算机概述与数据表示和运算.ppt_第1页
计算机概述与数据表示和运算.ppt_第2页
计算机概述与数据表示和运算.ppt_第3页
计算机概述与数据表示和运算.ppt_第4页
计算机概述与数据表示和运算.ppt_第5页
已阅读5页,还剩120页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

山东师范大学信息科学与工程学院 微机原理Principlesofcomputer 卢洪武教授 前言 为什么以单片机为例学习微机原理 随着微电子技术的日益进步 微型计算机向高性能的64位微机和适用于测控的单片微机两个方向迅速发展 单片微机是指在一块芯片上集成有CPU ROM RAM 并行和串行I O接口 以及定时器 计数器等多种功能部件的微型计算机 这种微型计算机也可称之为微控制器 它具有集成度高 可靠性高 性能价格比高 适应温度范围宽 抗干扰能力强 小巧 灵活 易于实现机电一体化等优点 现已广泛应用于检测 控制 智能化仪器仪表 以及生产设备自动化 家用电器等领域 计算机的产生加快了人类改造世界的步伐 但是它毕竟体积大 单片机在这种情况下诞生了 它为我们改变了什么 纵观我们现在生活的各个领域 从导弹的导航装置 到飞机上各种仪表的控制 从计算机的网络通讯与数据传输 到工业自动化过程的实时控制和数据处理 以及我们生活中广泛使用的各种智能IC卡 家用电器 电子宠物等 这些都离不开单片机 以前没有单片机时 这些东西只能使用复杂的模拟电路来做 然而这样做出来的产品不仅体积大 而且成本高 并且由于使用时间的延长元器件不断老化 控制的精度自然也会达不到标准 在单片机产生后 我们控制这些东西就实现智能化了 我们只需要在单片机外围接一些简单的接口电路 需要的功能由人写入程序来完成 这样产品的体积变小了 成本也降低了 长期使用也不会担心精度达不到了 所以 它的魔力不仅是在现在 在将来将会有更多的人来接受它 使用它 据统计 我国的单片机年容量已达5 6亿片 且每年以大约20 的速度增长 但相对于世界市场我国的占有率还不到3 单片机的应用程度标志一个国家的工业化水平 所以 学习单片机在我国有着广阔的前景 为了促进大学生创新能力的培养 教育部大力倡导的大学生电子设计大赛 嵌入式系统设计大赛 飞思卡尔 智能车设计大赛 全国电子专业人才设计与技能大赛 TI杯大学生电子设计大赛等都要求有较高的单片机应用水平 怎样才能学好微机原理呢 之所以我们选择以单片机为例学习 微机原理 除上述原因外 单片机还具有价格低廉 性能优越 功能齐全的特点 由于现代单片机中都集成了ISP 在系统可编程 功能 且开发工具 开发板极易得到 有一台计算机 化几十块钱 买一块开发板 或者自己用万用板焊一个单片机最小系统花不到20块钱就可以作实验了 大家都知道计算机是实践性很强的一门技术 有人说 计算机是玩出来的 单片机亦一样 只有多练习 多实际操作 才能真正掌握 Practiceisabestwaytolearning 第一章概述及计算机数据基础 一 计算机发展与组成 二 单片机简介 1946年由美国宾夕法尼亚大学研制ENIAC ElectronicNumericalIntegratorAndcalculator 运算速度5000次 秒 功耗150kw h 占地170m2 造价100万美元 一 计算机发展与组成 1946 1958第一代电子管计算机 磁鼓存储器 机器语言 汇编语言编程 1 1发展概况 1958 1964第二代晶体管计算机 磁芯作主存储器 磁盘作外存储器 开始使用高级语言编程 1964 1971第三代集成电路计算机 使用半导体存储器 出现多终端计算机和计算机网络 1971 第四代大规模集成电路计算机 出现微型计算机 单片微型计算机 外部设备多样化 1981 第五代人工智能计算机 模拟人的智能和交流方式 世界上第一台计算机1946年2月15日 第一台计算机ENIAC问世 这标志着计算机时代的到来 ENIAC是电子管计算机 时钟频率仅有100KHz 但能在1秒钟的时间内完成5000次加法运算 与现代的计算机相比 有许多不足 但它的问世开创了计算机科学技术的新纪元 对人类的生产和生活方式产生了巨大的影响 ENIAC的出现满足了人们计算的需要 但它的体积实在太大了 1 2计算机发展趋势 微型化 便携式 低功耗巨型化 尖端科技领域的信息处理 需要超大容量 高速度智能化 模拟人类大脑思维和交流方式 多种处理能力系列化 标准化 便于各种计算机硬 软件兼容和升级网络化 网络计算机和信息高速公路多机系统 大型设备 生产流水线集中管理 独立控制 故障分散 资源共享 1 3微型计算机组成结构 电子计算机技术的发展按使用元器件划分相继经历了五个时代 电子管计算机 晶体管计算机 集成电路计算机 大规模集成电路计算机 超大规模集成电路计算机 计算机的结构仍然没有突破冯 诺依曼提出的计算机的经典结构框架 计算机的冯 诺依曼结构1946年6月 匈牙利籍数学家冯 诺依曼提出了 程序存储 和 二进制运算 的思想 进一步构建了计算机由运算器 控制器 存储器 输入设备和输出设备组成这一计算机的经典结构 二 单片机的发展过程及产品近况 2 1单片机的发展过程 单片机技术发展过程可分为三个主要阶段 单芯片微机形成阶段1976年 Intel公司推出了MCS 48系列单片机 8位CPU 1K字节ROM 64字节RAM 27根I O线和1个8位定时 计数器 特点是 存储器容量较小 寻址范围小 不大于4K 无串行接口 指令系统功能不强 性能完善提高阶段1980年 Intel公司推出了MCS 51系列单片机 8位CPU 4K字节ROM 128字节RAM 4个8位并口 1个全双工串行口 2个16位定时 计数器 寻址范围64K 并有控制功能较强的布尔处理器 特点是 结构体系完善 性能已大大提高 面向控制的特点进一步突出 现在 MCS 51已成为公认的单片机经典机种 微控制器化阶段 1982年 Intel推出MCS 96系列单片机 芯片内集成 16位CPU 8K字节ROM 232字节RAM 5个8位并口 1个全双工串行口 2个16位定时 计数器 寻址范围64K 片上还有8路10位ADC 1路PWM输出及高速I O部件等 特点是 片内面向测控系统外围电路增强 使单片机可以方便灵活地用于复杂的自动测控系统及设备 微控制器 的称谓更能反应单片机的本质 2 2单片机产品近况 ATMEL公司融入Flash存储器技术的AT89系列 Philips公司的80C51 80C552系列 华邦公司的W78C51 W77C51高速低价系列 ADI公司的AD C8xx高精度ADC系列 LG公司的GMS90 97低压高速系列 Maxim公司的DS89C420高速 50MIPS 系列 Cygnal公司的C8051F系列高速SOC单片机 80C51系列单片机产品繁多 主流地位已经形成 近年来推出的与80C51兼容的主要产品有 非80C51结构单片机新品不断推出 给用户提供了更为广泛的选择空间 近年来推出的非80C51系列的主要产品有 Intel的MCS 96系列16位单片机 Microchip的PIC系列RISC单片机 TI的MSP430F系列16位低功耗单片机 Freescale单片机 具有几千种型号涵盖了从8位到32位的各种需求的单片机 三 单片机的特点及应用领域 3 1单片机的特点 近期推出的单片机产品 内部集成有高速I O口 ADC PWM WDT等部件 并在低电压 低功耗 串行扩展总线 控制网络总线和开发方式 如在系统编程ISP 等方面都有了进一步的增强 控制性能和可靠性高实时控制功能特别强 其CPU可以对I O端口直接进行操作 位操作能力更是其它计算机无法比拟的 另外 由于CPU 存储器及I O接口集成在同一芯片内 各部件间的连接紧凑 数据在传送时受干扰的影响较小 且不易受环境条件的影响 所以单片机的可靠性非常高 体积小 价格低 易于产品化单片机芯片即是一台完整的微型计算机 对于批量大的专用场合 一方面可以在众多的单片机品种间进行匹配选择 同时还可以专门进行芯片设计 使芯片的功能与应用具有良好的对应关系 在单片机产品的引脚封装方面 有的单片机引脚已减少到8个或更少 从而使应用系统的印制板减小 接插件减少 安装简单方便 3 2单片机的应用领域 智能仪器仪表 单片机用于各种仪器仪表 一方面提高了仪器仪表的使用功能和精度 使仪器仪表智能化 同时还简化了仪器仪表的硬件结构 从而可以方便地完成仪器仪表产品的升级换代 如各种智能电气测量仪表 智能传感器等 3 2单片机的应用领域 单片机应用军事技术 3 2单片机的应用领域 单片机应用汽车电子 机电一体化产品 机电一体化产品是集机械技术 微电子技术 自动化技术和计算机技术于一体 具有智能化特征的各种机电产品 单片机在机电一体化产品的开发中可以发挥巨大的作用 典型产品如机器人 数控机床 自动包装机 点钞机 医疗设备 打印机 传真机 复印机等 单片机应用智能控制 实时工业控制 单片机还可以用于各种物理量的采集与控制 电流 电压 温度 液位 流量等物理参数的采集和控制均可以利用单片机方便地实现 在这类系统中 利用单片机作为系统控制器 可以根据被控对象的不同特征采用不同的智能算法 实现期望的控制指标 从而提高生产效率和产品质量 典型应用如机床控制 电机转速控制 温度控制 自动生产线等 单片机在工业上的应用 数控车床 分布式系统的前端模块 在较复杂的工业系统中 经常要采用分布式测控系统完成大量的分布参数的采集 在这类系统中 采用单片机作为分布式系统的前端采集模块 系统具有运行可靠 数据采集方便灵活 成本低廉等一系列优点 计算机外设控制器 智能化键盘 智能化显示器 智能化打印机 智能化软盘和硬盘驱动器 鼠标及智能化绘图仪等 均可用单片机作为控制器 家用电器 家用电器是单片机的又一重要应用领域 前景十分广阔 如空调器 电冰箱 洗衣机 电饭煲 电子游戏机 电视机 录音机 组合音响 录像机 高档洗浴设备 高档玩具等 另外 在交通领域中 汽车 火车 飞机 航天器等均有单片机的广泛应用 如汽车自动驾驶系统 航天测控系统 黑匣子等 单片机的应用图例 四 单片机系统的开发过程通常开发一个单片机系统可按以下几个步骤进行 1 明确系统设计任务 完成单片机及其外围电路的选型工作 2 运用PROTEL POWERPCB等软件设计系统原理图和PCB板 经仔细检查PCB板后送工厂制作 3 完成器件的安装焊接 4 根据硬件设计和系统要求编写应用程序 5 在线调试软硬件 6 使用编程器烧写单片机应用程序 独立运行单片机系统 HW单片机仿真实验板 程序设计通常是C语言或者汇编语言 在特定的集成开发环境 IDE 中编程调试 比如应用最广泛的KEILuVision2 四 单片机应用系统开发 调试 硬件仿真器 硬件仿真器 目标系统 开发软件 四 单片机应用系统开发 调试 使用SoftICE仿真 目标系统 通信数据线 开发软件 四 单片机应用系统开发 程序下载 使用并行编程器 编程器驱动软件 单片机或单独存储器 并行编程器 四 单片机应用系统开发 程序下载 使用ISP InSystemProgram在系统编程 ISP软件 下载线 目标系统 五 计算机的基本组成 冯 诺依曼 VonNeumann 体系结构1946年由美籍匈牙利数学家冯 诺伊曼提出计算机的体系结构发生了许多变化 但VonNeumann提出的二进制 程序存储和程序控制 依然是普遍遵循的原则 冯 诺伊曼的存储程序的计算机设计基本思想是 采用二进制表示数据和指令 指令由操作码和地址码组成 5 1冯 诺依曼计算机的特点 采用存储程序即把编好的程序和原始数据预先存入计算机主存中 使计算机工作时能连续 自动 高速地从存储器中取出一条条指令并执行 从而自动完成预定的任务 即 存储程序 和 程序控制 简称存储程序控制 的概念 指令的执行是顺序的 即一般按照指令在存储器中存放的顺序执行 程序分支由转移指令实现 计算机硬件系统由运算器 存储器 控制器 输入设备和输出设备五大部件组成 并规定了五大部件的基本功能 计算机以运算器为中心 输入输出设备与存储器之间的数据传送通过运算器完成 算术运算逻辑运算 存放数据和程序 将信息转换成机器能识别的形式 将结果转换成人们熟悉的形式 指挥程序运行 冯 诺依曼计算机硬件框图 以运算器为中心 冯 诺依曼计算机硬件框图 二 计算机硬件框图 1 现代计算机硬件框图 以存储器为中心 ALU 主存辅存 CPU 主机 I O设备 硬件 CU 2 现代计算机硬件框图 5 2现代计算机硬件 五大部件 1 存储器功能 存放指令和数据 操作 存储器读操作 从存储器取出数据 又称为读出 存储器写操作 向存储器存放数据 又称为写入 概念 存储单元 存储二进制信息的部件 每个单元可以存放一个字或字节的信息 存储器就是存储单元的集合 单元地址 存储单元的编号 是区分存储器中不同存储单元的唯一标志 5 2现代计算机硬件 五大部件 2 运算器功能 在控制器控制下 进行算术运算和逻辑运算 运算器的技术性能高低直接影响着计算机的运算速度和整机性能 3 控制器功能 对当前指令进行译码分析得出所需要完成的操作 产生并发送各部件所需要的控制信号 从而使整个计算机自动 协调地工作 控制器是计算机的控制指挥部件 也是整个计算机的控制中心 5 2现代计算机硬件 五大部件 4 输入设备功能 将外界的信息转换为计算机能识别的二进制代码 输入设备是给计算机输入信息的设备 5 输出设备功能 将计算机处理结果转换成人们或其他设备所能接收的形式 5 3微型计算机的结构 微型计算机的基本结构图 计算机中的三总线 从上图可以看出 当前广泛采用的微型计算机结构中 各部件是通过总线方式连接到一起的 控制信号 地址信号 数据信号分别通过控制总线 地址总线和数据总线传送 所谓总线 BUS 是指计算机中用于在各部件之间传输的信息的公共通道 总线实际上就是一些传输特定信号的传输线路 线路条数取决于微处理器本身的结构 总线有三种类型 数据总线 地址总线 控制总线 1 数据总线 DataBus 用于微处理器和存储器之间 以及微处理器同I O接口之间进行数据传输 数据总线是双向的 既可以从CPU传输到外部 也可以从外部传输回CPU CPU的字长往往同数据总线的条数相同 2 地址总线 AddressBus 用于CPU向存储器或者I O接口传输地址信息 计算机执行访问操作时 不管是读操作 还是写操作 都是首先由CPU通过地址总线向访问目标发送地址信息 地址总线是单向的 即只能由CPU向外部传送地址信号 地址总线的条数决定CPU可以直接访问的存储器单元的数目 假设某CPU的地址总线的条数是n 则可访问的最大的存储空间的容量是2n 例如 假设一个存储单元保存一个字节的内容 则具有16条地址总线的CPU可访问的最大存储容量为216Byte 64KB 3 控制总线 ControlBus 用于传输CPU发给各个部件的控制信号 以及传送其他部件回传到CPU的状态信号或请求信号 对每一条控制线 其传输方向的固定的 或者是CPU向外发出的控制信号 或者是其他部件传送给CPU的状态 请求信号 采用总线结构的优点是系统结构简单 规则 易于扩充 但由于总线是公共通道 当其被占用时 其他的传输请求只能等待 这对提高计算机的整体性能显然不利 在计算机中 不仅部件之间采用总线结构 部件内部也采用总线结构 甚至 多台计算机设备进行互联时 采用的也往往是总线结构 5 4微处理器的基本结构介绍 微处理器是微型计算机的核心 虽然不同厂家 不同型号的微处理器的结构 性能差异较大 但一些基本的部件是相似的 例如 微处理器包括运算器 控制器和一些寄存器 运算器主要包括ALU 累加器ACC 标志寄存器FR 寄存器组等 而控制器主要包括程序计数器PC 指令寄存器IR 指令译码器ID 地址寄存器AR 控制信号发生器等 下图表示传统微处理器的结构框图 微处理器结构框图 1 算术逻辑单元ALUALU是运算器的核心部件 它在控制器发出的控制信号的作用下 可执行算术运算和逻辑运算 执行运算的操作数提前放到累加器和数据寄存器中 算术运算一般包括加法 减法 加一 减一 比较等 也有的可以执行乘法 除法运算 逻辑运算一般包括逻辑与 逻辑或 逻辑非 逻辑异或 逻辑同或等 为配合以上运算 ALU还支持一些辅助操作 如移位操作等 2 累加器A或ACC Accumulator 累加器的英文原文是积累 集聚的意思 翻译成累加器有可能让读者理解为这是一种加法器 累加器实际上一个寄存器 往往用于存储送入ALU进行运算的某一个操作数 例如 执行加法运算时 其中一个加数送到累加器中 加法完成后的和最终也可送到累加器中 累加器是一个非常重要的寄存器 在很多指令中都会用到 3 标志寄存器FR FlagRegister 计算机在运算过程中 可能产生很多标志位信息 例如 在执行加法或减法运算时 可能产生进位或借位 如果是带符号数的运算 还可能产生溢出位 另外 运算结果是负数或者是0 当前奇偶校验位是1还是0 等等 都是经常出现的位信息 这些位信息对计算机的下一步运算具有直接影响 因此有必要将他们单独保存起来 标志寄存器就是用于存放各种标志位信息的 是所有型号的微处理器都具备的一个重要寄存器 不同CPU所保存的标志位各不相同 但有些标志位是类似的 例如进位标志C 辅助进位AC 溢出标志OV 结果为零标志Z 符号标志S 奇偶标志P等 4 寄存器组学习CPU 寄存器组是必须要理解并重视的重要部件 因为用户在使用CPU时 一定会用到寄存器组 寄存器组分为两类 通用寄存器组和专用寄存器组 所谓通用寄存器组 可理解为CPU内部的较小容量的存储器 这些存储器用于暂时存放运算数或中间结果 由于通用寄存器在CPU内部 所以速度很快 这对提高运算速度是有好处的 例如累加器ACC就是通用寄存器 专用寄存器组是一些具有专门用途的寄存器的集合 例如标志寄存器FR 堆栈指针寄存器SP 程序计数器PC等等 5 程序计数器PC Programcounter 程序计数器PC是CPU中最重要的专用寄存器 用于保存下一条要执行的指令的地址 指令保存在存储器的某个存储单元 每个单元对应一个地址 要执行哪条指令 就需要CPU把哪条指令的地址 存储在PC中 通过地址总线送到存储器 由于指令大部分是顺序执行的 也就是说 当PC的地址送到地址总线上后 可对PC的内容自动加1 使其指向下一条要执行的指令 从而可以继续执行指令 从这一方面看 PC的作用是非常重要的 当然 程序不一定总是顺序执行的 也存在跳转的可能 当跳转时 PC的内容除了自动加一外 还要执行一些调整操作以修改PC的指向 这在后文介绍指令系统时将有详细解释 6 指令寄存器 指令译码器指令寄存器 IR InstructionRegister 用于保存从存储器传送过来的指令信息 该信息在指令执行过程中一直存在 指令译码器 ID InstructionDecoder 对指令寄存器送来的指令进行译码 产生各种电平控制信号 这些控制信号送到控制信号发生器 由指令译码器送出的电平信号同外部时钟脉冲在控制信号产生电路中组合 形成按照一定节拍变化的各种电平信号和脉冲信号 也就是生成各种控制信号 这些控制信号被送到运算器 存储器或I O接口电路 执行各种操作 5 5程序执行过程 程序保存在外存储器中 需要执行时 系统首先将程序从外存储器调入到内存储器中 因为程序是有多条有序指令组成的指令集合 当将其调入到内存中后 每条指令都有自己的地址 开始执行程序前 程序的第一条指令的地址先送到程序计数器PC中 程序的执行过程就是按照一定的顺序将指令送到指令寄存器 再送到指令译码器 经过指令译码产生各种控制信号 通过控制部件发出这些控制信号控制相关部件动作的过程 一条指令的执行大致可分为两个过程 取指令阶段和执行指令阶段 取指令 是从存储器的某存储单元将指令通过数据总线传送到指令寄存器的过程 执行指令 是指将指令从指令寄存器IR中送到指令译码器ID 由ID对指令进行解释 然后通过控制部件执行的过程 假设每条指令仅占一个存储单元 则程序执行的具体过程可描述为 1 控制器将PC当前内容送到地址寄存器AR 即送出当前指令的地址 然后PC自动加1 2 在控制器作用下 指令地址通过地址总线送到存储器的地址译码部件 由地址译码部件选中存储器的相应存储单元 3 控制器向存储器发出 读 指令的控制命令 存储器收到命令后 选中相应存储单元 并将其内容 也就是当前指令的机器码送到数据总线 4 通过数据总线 指令机器码送入指令寄存器IR 然后送到指令译码器ID译码 在控制信号产生器的作用下产生各种控制信号 执行各种操作 需要说明 当程序完全是顺序执行时 PC自动加1就可保证程序的自动 高效执行 但是当程序中存在跳转指令时 还需根据实际情况调整PC的取值 思考练习题 1 微型计算机由哪几部分组成 各部分的功能是什么 2 微型计算机的各部分怎样连接 简述三总线的作用 3 什么是单片机 它与一般微型计算机在结构上有什么区别 4 单片机主要应用在哪些方面 5 简述单片机的开发过程 六 计算机中数据的表示与运算 引言 十进制数是人们习惯使用的进制 计算机只能 识别 二进制数 为了书写和识读方便 计算机程序需要用十六进制数表示 十进制数 二进制数 十六进制数之间的关系 相互转换和运算方法 是学习计算机必备的基础知识 1 数值型数据的表示方式1 1 符号的处理 正数 负数 1 2 数值的处理 数制转换 1 3 小数点的处理 定点 浮点 1 4 原码的表示方法1 5 反码的表示方法1 6 补码的表示方法 重点研究 1 7 移码的表示方法1 8 字符 汉字的表示方法 六 计算机中数据的表示与运算 机器数的表示方法 实际数的表示方法 研究在机器中怎样用二进制表示十进制数 研究哪种机器数的表示方法更利简化运算 通常我们把一个数 连同符号 在机器中数值化称后为 机器数 而把原来的数值称为 真值 一个实际数 如 8 75 通常由符号 数值 小数点三部分组成 因此 将一个实际数在计算机内部表示需要解决三个问题 1 符号的处理 8 57 2 数值的处理 8 75 3 小数点的处理 8 75 1 数据的表示方式 从真值到机器数 真值 5 机器数0101 1 数值型数据的表示方式1 1 符号的处理 正数 负数 1 2 数值的处理 数制转换 1 3 小数点的处理 定点 浮点 1 4 原码的表示方法1 5 反码的表示方法1 6 补码的表示方法 重点研究 1 7 移码的表示方法1 8 字符 汉字的表示方法 六 计算机中数据的表示与运算 机器数的表示方法 实际数的表示方法 研究在机器中怎样用二进制表示十进制数 通常符号处理有两种方法 1 一种是舍弃符号 采用无符号表示 时间 利率等 2 一种是采用符号 并对符号加以处理 如何处理符号呢 途径只有一条 即符号数码化 0 表示正 1 表示负 1 1 符号的处理 正数 负数 真值 计算机中用正负号 绝对值表示的数 例如 123 123 101011 10101011机器数 计算机中把符号位和数值数码化以后的数 例如 123 01111011 123 11111011 1010110 01010110 1010101 11010101带符号的n位有效数 机器数为n 1位 1 数值型数据的表示方式1 1 符号的处理 正数 负数 1 2 数值的处理 数制转换 1 3 小数点的处理 定点 浮点 1 4 原码的表示方法1 5 反码的表示方法1 6 补码的表示方法 重点研究 1 7 移码的表示方法1 8 字符 汉字的表示方法 六 计算机中数据的表示与运算 机器数的表示方法 实际数的表示方法 1 直接采用二进制数表示如 255 10 11111111 2优点 在计算机中 数码是由电平的高低来表示的 通常高电平代表 1 低电平代表 0 所以采用二进制方便 容易实现 缺点 八个1表示255 二进制表示数码的效率太低 书写极其不方便 1 2 数值的处理 数制转换 十进制数转换成二进制数 对一个数的整数部分和小数部分分别进行处理 合并各自得出结果 整数部分 采用除2取余数法 例 将 105 10转换成二进制 2105余数结果2521最低位22602130 26123021101最高位得出 105 10 1101001 2 直到商等于0为止 1 2 数值的处理 数制转换 直到乘积的小数部分为0 或结果已满足所需精度要求为止 十进制数转换成二进制数 对一个数的整数部分和小数部分分别进行处理 合并各自得出结果 小数部分 采用乘2取整数法 例 将 0 3125 10转换成二进制数 要求4位有效位 结果0 3125 2最高位0 6250 2 1 2500 20 5000 2最低位1 0000得出 0 3125 10 0 0101 2 1 2 数值的处理 数制转换 十进制数转换成二进制数 对一个数的整数部分和小数部分分别进行处理 合并各自得出结果 例 将 105 3125 10转换成二进制数 要求4位有效位 前面计算得出 105 10 1101001 2前面计算得出 0 3125 10 0 0101 2 得出 105 3125 10 1101001 0101 2 1 2 数值的处理 数制转换 直到乘积的小数部分为0 或结果已满足所需精度要求为止 例 将 0 1 10转换成二进制数 要求5位有效位 结果0 1 2最高位0 2 2 0 4 20 8 21 6 21 2 20 4 20 8 2最低位1 6000得出 0 1 10 0 00011 2 可能永远乘不完 小数部分不为0 意味存在一点误差 1 2 数值的处理 数制转换 2 引进组合二进制数 八 十六进制数从最低有效位开始 三位一划分 组成八进制Q 从最低有效位开始 四位一划分 组成十六进制H 例如 110101111001二进制1101011110016571Q八进制110101111001D79H十六进制 注意 八 十六进制的引进 是为了人书写方便而已 在机器内部表示都是一样的 不需要编码 译码 1 2 数值的处理 数制转换 1 2 数值的处理 数制转换 二进制数 八进制数 十六进制之间的转换对于一个兼有整数和小数部分的数 以小数点为界 不足的位数补0 对整数部分将0补在数的左侧 对小数部分将0补在数的右侧 例 从二进制数转换到八进制数 则以3位为1组 1101 0101 2 001101 010100 2 15 24 8例 从二进制数转换到十六进制数 则以4位为1组 11101 0101 2 00011101 0101 2 1D 5 16八进制 十六进制数转换到二进制 顺序将每位数展开写成3或4位 例 15 24 8 001101 010100 2 1101 0101 2 八进制数与十六进制数之间 可将二进制数作为中介进行转换 1 2 数值的处理 数制转换 3 BCD码 十进制 如果计算机以二进制进行运算和处理时 只要在输入输出处理时进行二 十进制转换即可 但在商业统计中 二 十进制转换存在两个问题 1 转换占用实际运算很大的时间 2 十进制的0 1 无法用二进制精确表示 且十进制数0 1 0 1 0 2 在二进制中无法得到精确的数值 会存在一个小误差 因此 在商用计算机中 专门设计适用于十进制运算的电路 这时的十进制数一般采用BCD码表示 1 2 数值的处理 数制转换 由于ASCII码低四位与BCD码相同 转换方便 ASCII码左移四位得BCD码 BCD码前加0011得ASCII码 一般采用二进制运算的计算机中不采用BCD码 矫正不方便 商用计算机中采用BCD码 专门设置有十进制运算电路 十进制BCD码二进制数十六进制数ASCII码000000000000110000100010001100110001 91001100190011100110000100001010A16000101101111F 从键盘输入输出的是ASCII码 1 2 数值的处理 数制转换 BCD码算术运算 要对运算结果进行修正 加法运算的修正规则是 两个一位BCD码相加之和小于或等于9 不修正 相加之和大于或等于10 加6修正 并向高位进位 4 9 130100 10011101 0110修正10011进位 1 8 90001 10001001不需要修正 9 7 161001 011110000 0110修正10110进位 1 2 数值的处理 数制转换 1 数值型数据的表示方式1 1 符号的处理 正数 负数 1 2 数值的处理 数制转换 1 3 小数点的处理 定点 浮点 1 4 原码的表示方法1 5 反码的表示方法1 6 补码的表示方法 重点研究 1 7 移码的表示方法1 8 字符 汉字的表示方法 六 计算机中数据的表示与运算 机器数的表示方法 实际数的表示方法 小数点可否数码化 如10110011 你能鉴别哪一位数码表示小数点吗 答案 不能 无法与数位相区别 1 3 小数点的处理 定点 浮点 定点数 小数点固定在某个位置上的数据 隐含约定 不出现 定点小数 小数点固定在数值部分的左边 符号位的右边 定点整数 小数点固定在数值部分的右边 定点数的表示范围是有限的 但硬件的设计比较简单 浮点数 指小数点位置可浮动的数据 1 定点数的表示方法 例如 123 45 0 12345X103纯小数123 45 12345X10 2纯整数假设用一个n 1位表示定点数X X0X1X2 Xn X0 表示符号 放在最左位置 0 正号 1 负号 X1X2 Xn 其余位数代表数值 对于任意一个定点数 在定点计算机中数的表示格式如下 X0X1X2 Xn 尾数 数值 符号 1 3 小数点的处理 定点 浮点 定点小数 小数点位于在X0和X1之间 表示纯小数 数值范围 当X1X2 Xn各位是0时 0 0000000 X 最小 0当X1X2 Xn各位是1时 0 1111111 X 最大 1 2 n0 X 1 2 n X0X1X2 Xn 尾数 数值 符号 小数点的这个点在计算机中是隐含约定的 不出现的 1 3 小数点的处理 定点 浮点 定点整数 小数点位于最低位的右边 数值范围 当X1X2 Xn各位是0时 00000000 X 最小 0当X1X2 Xn各位是1时 01111111 X 最大 2n 1 10 X 2n 1 1 X0X1X2 Xn 尾数 数值 符号 1 3 小数点的处理 定点 浮点 小数点的这个点在计算机中是隐含约定的 不出现的 定点小数数值表示 X X0X1X2 XnX0 0 Xi 0 1 0 i nX12 1 Xn 12 n 1 Xn2 n例如 X 0 10101其数值 2 1 2 3 2 5 21 32 定点整数数值表示 X X0X1X2 XnXi 0 1 0 i nX02n X12n 1 Xn 121 Xn例如 X 010101其数值 24 22 20 21 1 3 小数点的处理 定点 浮点 阶码 浮点数的机器格式 尾数 阶符 数符 浮点数 小数点的位置根据需要而浮动 N S rjr 基数 通常r 2 j 阶码 常为纯整数 用移码或补码表示 S 尾数 常为纯小数 用原码或补码表示 j和S都是带符号的数例如 10011101 201101000 01101000 10011101 现在大部分计算机都是采用浮点运算 0 312X103 1 3 小数点的处理 定点 浮点 一个实际数 如 8 75 通常由数值 小数点 符号 三部分组成 因此 将一个实际数在计算机内部表示需要解决三个问题 1 符号处理 8 57 正号 0 负号 1 2 数值的处理 8 75 二进制 八进制 十六进制 十进制BCD编码 3 小数点的处理 8 75 定点数 定点小数 定点整数 浮点数 小结 真值表示为机器数解决的三个问题 1 数值型数据的表示方式1 1 符号的处理 正数 负数 1 2 数值的处理 数制转换 1 3 小数点的处理 定点 浮点 1 4 原码的表示方法1 5 反码的表示方法1 6 补码的表示方法 重点研究 1 7 移码的表示方法1 8 字符 汉字的表示方法 六 计算机中数据表示与的运算 机器数的表示方法 实际数的表示方法 研究哪种机器数表示方法更利于简化运算 计算机中的机器数常用三种不同的表示方法 原码 补码 反码 原码的表示方法 一个二进制数X X0X1X2 Xn 原码的编码方法是当X 0时 X 原的代码是 0X1X2 Xn当X 0时 X 原的代码是 1X1X2 XnX0是符号位X1X2 Xn是数据的二进制数值 1 4 原码的表示方法 一位符号 数据的绝对值 1 原码定点整数的表示方法 X0X1X2 Xn X 原 X2n x 02n x 2n x 0 x 2n X 原是机器数 X是真值 即实际数 一个n 1位整数 原码能表示的数值范围是 1111 1 2n 1 x 2n 1 0111 1 对于给定的原码 X 原 它的十进制数X为 X 1 x0 x12n 1 xn 121 xn20 例如 假设x 1010 y 1010 求 x 原 y 原解 原码数值部分与它的二进制位相同 加上符号位后得 X 原 01010 y 原 11010 1 4 原码的表示方法 2 原码定点小数的表示方法 X0X1X2 Xn X 原 X1 x 01 X 1 X 0 x 1一个n 1位的定点小数原码能表示的数值范围为 1 111 1 1 2 n x 1 2 n 0 111 1 对给定的小数原码 x 原 它的十进制数x为 X 1 x0 x12 1 xn 12 n 1 xn2 n 例如 假设x 0 1010 y 0 1010求 x 原 y 原 解 原码数值部分与它的二进制位相同 加上符号位后 X 原 0 1010 y 原 1 1010 1 4 原码的表示方法 例 已知 x 原 1 1010101 求X的真值 解 X真值 0 1010101 二进制形式写 也可根据以下公式求得 X真值 1 x0 x12 1 xn 12 n 1 xn2 n X真值 1 1 1 2 1 0 2 2 1 2 3 0 2 4 1 2 5 0 2 6 1 2 7 1 0 5 0 125 0 03125 0 0078125 0 6640625 一般真值用十进制形式写 1 4 原码的表示方法 对给定的小数原码 x 原 它的十进制数X为 X 1 x0 x12 1 xn 12 n 1 xn2 n 原码的性质优点 采用原码表示法简单易懂 乘除法运算的规则比较简单 缺点 1 在原码表示中 0 有两种表示方法 即 0 000 0和 0 100 0 2 加减法运算的实现比较复杂 两个数相加时需要对符号进行判断 如果同号 则进行加法运算 如果异号 则进行减法运算 而在进行减法运算时 还要比较绝对值的大小 然后用大的减去小的 再确定符号 1 4 原码的表示方法 原码的性质例如 X 1001 9 10Y 0011 3 10计算X Y机器数直接相加 X 原 Y 原 11001 00011 11100结果 X Y 原 11100X Y的真值为 1100即 12 10结果错误 1 4 原码的表示方法 直接采用原码运算是不行的 处理负数运算太复杂 1 数值型数据的表示方式1 1 符号的处理 正数 负数 1 2 数值的处理 数制转换 1 3 小数点的处理 定点 浮点 1 4 原码的表示方法1 5 反码的表示方法1 6 补码的表示方法 重点研究 1 7 移码的表示方法1 8 字符 汉字的表示方法 六 计算机中数据的表示与运算 机器数的表示方法 实际数的表示方法 优点 具有对称性 容易生成 缺点 1 存在 0与 0之分 0 反 0 00 0 0 反 1 11 1 计算时需要把1 11 1换成0 00 0 2 需加权操作 即反码运算若符号位有进位 运算结果要加1 1 5 反码的表示方法 容易生成 触发器Q端输出是原码 Q端输出就是反码 得到方便 运算复杂 现在计算机中反码很少使用 CDC公司某些机器使用过 反码表示法 正数 数值部分与真值形式相同 负数 真值的数值部分按位取反 例 X 0 0110 X 反 0 0110X 0 0110 X 反 1 1001 1 数值型数据的表示方式1 1 符号的处理 正数 负数 1 2 数值的处理 数制转换 1 3 小数点的处理 定点 浮点 1 4 原码的表示方法1 5 反码的表示方法1 6 补码的表示方法 重点研究 1 7 移码的表示方法1 8 字符 汉字的表示方法 六 计算机中数据的表示与运算 机器数的表示方法 实际数的表示方法 举例 时钟是以12为模的计数 假设现在4点正 有一只表已经7点了 为校正时间采用两种方法 1 将时钟逆时针拨3格 2 将时钟顺时针拨9格 可看出减3和加9是等价的 也就是说9是 3 对12的补码 数学公式表达为 3 9 mod模12 7 3 7 9 mod12 mod12的意思就是12为模数 12是丢掉的数值 7 3 4和7 9 16 mod12 等价 因为表指针超过12时 自动丢掉12 1 6 补码的表示方法 补 的启示 减法操作可以用加法操作来代替 也就是负数用补码表示时 可以把减法转化为加法 在计算机中实现起来就比较方便 即 如果用补码表示的话 只设计一个加法运算器就可以实现加减运算 简化了硬件设计部件 0 1 128 127 127 126 3 2 1 设机器数字长为8位 其中 位为符号位 对于整数 当其分别代表无符号数 原码 补码和反码时 对应的真值范围各为多少 P225 X X 0 0 补 0 补 0 0000 一半正 一半负 重点 全0是0 全1是 1 0 1 8 7 7 6 3 2 1 设机器数字长为4位 其中 位为符号位 对于整数 当其分别代表无符号数 原码 补码和反码时 对应的真值范围各为多少 P225 X X 0 0 补 0 补 0 0000 一半正 一半负 重点 全0是0 全1是 1 1 定点整数的补码对于一个n 1位的二进制整数X X0X1X2 Xn 则补码表示的定义为 X 补 x2n x 02n 1 x 0 x 2n mod2n 1 1 6 补码的表示方法 正数的补码与原码相同 负数的补码是将二进制位按位取反后 末位加1 例如 假设x 1010 y 1010 求 x 补和 y 补解 正数补码与原码相同 加上符号位0后得 x 补 01010负数补码的数值部分等于二进制位按位取反 末位加1 符号位1 所以 y 补 10110 1010取反0101 末位加1得0110 求一个负数的补码的另一种方法 从低位开始看 对遇到的0和第一个1取其原码 从第一个1之后开始直到最高位数值部分 均取反码 符号位为1 例如 y 1010 y 补 10110 x 10101011 x 补 101010101 1 6 补码的表示方法 1 6 补码的表示方法 对于给定定点整数的补码 x 补 它的十进制数为 X X02n X12n 1 Xn 121 Xn20例如 x 补 10000000 X0X1 Xn 1Xn 求其真值n 1 8 共8位 1位符号位 n 7X 1 27 0 26 0 20 128 一个n 1位整数补码所能表示的数值范围为 100 0 2n x 2n 1 011 1 如果是八位二进制数 27 x 27 1 128 x 127 例如 一个8位的机器数 用补码表示的范围是多少 解 符号位一位 数值部分七位 那么它的范围是 正的是 01111111 补 27 1 127负的是 10000000 补 27 128 2 定点小数的补码对于定点小数X X0X1X2 Xn 其补码的表示方法与整数类似 同样用最高位X0作为符号位 其定义为 X 补 X1 X 02 X 0 X 1 mod2 假设 X 0 1010求 X 补解 正数的补码与原码相同 符号位0得 X 补 0 1010 1 6 补码的表示方法 假设 y 0 1010求 y 补解 负数补码的数值部分等于它的二进制位按位取反 末位加1 符号位为1 所以 y 补 1 0101 1 1 0110定点小数补码的数值范围为 1 x 1 2 n对于给定的定点小数补码 x 补的代码 它的十进制数为 X x020 x12 1 xn 12 n 1 xn2 n 1 6 补码的表示方法 补码的特性 解决了负数符号问题 我们重点研究补码 1 在补码表中 0有唯一的编码 即 0 补 0 补 0 0000从数学上讲 零有两种表示对运算不利 所以当今大多数机器都使用补码 0 原 0 0000 0 原 1 0000 0 反 0 0000 0 反 1 1111 1 6 补码的表示方法 0必须转换 0必须转换 补码的特性 解决了负数符号问题 我们重点研究补码 2 采用补码运算 符号位可以与数值一起参加运算 只要结果不超出机器所能表示的数值范围 无须单独设置符号处理线路 原码运算 符号位要单独处理 1 6 补码的表示方法 对于带符号数x y下列公式成立 x 补 y 补 x y 补 modM x 补 y 补 x y 补 modM 3 目前大多数小 微型计算机ALU 只设加法器 采用补码运算后 可将正数 负数转化成正数 正数 即将减法转化成加法运算 这样只设加法器就可以了 现在几乎所有的计算机都是采用补码运算 所以 我们研究运算方法和运算器时 只研究补码运算 1 数值型数据的表示方式1 1 符号的处理 正数 负数 1 2 数值的处理 数制转换 1 3 小数点的处理 定点 浮点 1 4 原码的表示方法1 5 反码的表示方法1 6 补码的表示方法 重点研究 1 7 移码的表示方法1 8 字符 汉字的表示方法 六 计算机中数据的表示与运算 机器数的表示方法 实际数的表示方法 浮点数的表示形式 以2为底 X S 2jS尾数 绝对值小于1的规格化二进制小数 决定数的有效精度 j阶码 用移码或补码表示的整数 决定数的表示范围 2基数移码定义 X 补的符号位取反 即得 X 移 例 X 1011 X 补 01011 X 移 11011X 1011 X 补 10101 X 移 00101 1 7 移码的表示方法 浮点数的阶码为什么用移码表示呢 1 正数的移码大于负数的移码 X 移 X 移原码 补码 反码都不具备 2 如果 X Y则 X 移 Y 移所以 在浮点运算中 可以方便地通过比较移码的大小来实现阶码真值大小的比较 其他三种码都不具备这一特性 1 7 移码的表示方法 真值与三种机器数的转换 如果已知机器的字长 则机器数的位数应补够相应的位 例如 设机器字长为8位 则 X1 1011X2 1011 X1 原 00001011 X2 原 10001011 X1 补 00001011 X2 补 11110101 X1 反 00001011 X2 反 11110100X3 0 1011X4 0 1011 X3 原 0 1011000 X4 原 1 1011000 X3 反 0 1011000 X4 反 1 0100111 X3 补 0 1011000 X4 补 1 0101000 注意 小数点写出来是让我们看的 机器中没有小数点 1 8非数值数据表示1 ASCII字符编码 非数值数据又叫字符数据 是指字符 字符串 图形符号和汉字等多种数据 它们无数值的大小 也不能对它们进行算术运算 1 ASCII码 AmericanStandardCodeforInformationInterchange ASCII 是美国标准信息交换码 该编码被国际标准化组织ISO采纳 作为国际通用的信息标准交换代码 它有两种版本 1 基本ASCII码 用8位二进制数代码表示一个字符 最

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论