当前课程知识点:微机原理与接口技术 > 第1周 微型计算机基础概论 > 第5讲 计算机中数的表示与运算 > 数的表示
大家好
这一讲我们来学习
计算机中数的表示
以及它们的运算
我们知道
计算机硬件
能够直接识别的
只有二进制
所以在这里
我们所谓的数的表示
或者它的运算
我们都特指的是
二进制的表示和运算
计算机中的二进制数
从它的表示方法上
可以分为
定点表示法
和浮点表示法
或者简单的说
定点数和浮点数
定点表示法
又分为
定点整数
和定点小数
从它的这种
数的性质的这个角度去分
计算机中的数
又可以分为
无符号数和有符号数
实际上
无符号数
如果我们一定要去
对应到我们学的
十进制这个体系来讲
无符号从这个字面意思来讲
它就是没有符号的意思
其实有点儿对应于
我们十进制体系中的自然数
我们说自然数
实际上是不考虑符号的
也就说
大家都默认它是正的
但是在计算机中
因为我们人类
对于正和负
实际上我们可以用正号和负号
来描述
也就是说我们能看得懂
但是计算机
是看不懂正号和负号的
所以在计算机中
无符号数的意思
就是说
我们给出的一个数中
这些数中
所有的0和1
都是有意义的数值
也就是说
它根据它在
它的不同的位置
它占有不同的权重
比如1011
第一个最高位的这个1
它的权重是2的3次方
对吧
就是说每一个0和1
都是有意义的数字
而有符号数
也就是说
它必须要有符号位
因为
计算机根本不认识
正号和负号
所以我们还是
只有用0和1
来描述它的数的性质
是正的还是负的
所以有符号数中
我们至少在最高位
我们要用它来表示负号
其余的才是数值
这个是
有符号和无符号数
在形式上的一个区别
在计算机中
通常
各种编码
我们都可以视为无符号数
比如我们对字符的编码
包括我们汉字
和英文字符的编码
包括各种
音频 图像
这些信息的编码 等等
我们都认为它是无符号的
但是在数值上
我们都一般认为
它是有符号的
也就是说
它默认是按符号数
来进行处理了
不论是无符号数
还是有符号数
我们通称为机器数
也就是说
由计算机
来存储和处理的数
我们都称它为机器数
有符号和无符号数
我们后面会详细的来解释
我们下边先来说一下
有关定点数和浮点数
定点数
我们说
它就是小数点位之固定的一种数
我们称为定点数
定点整数嘛
顾名思义 小数点
我们说认为它是在最右侧
而定点小数
我们就说小数点在最左侧
就是这样
定点数
在早期的计算机中
我们都
整个数值的计算
都是采用定点数的方法
来处理和存储的
那么 定点数
它有什么不好呢?
因为我们说早期
那就意味着我们今天没有用它
那么
定点数它的缺点在哪里?
我们现在想象着
比如我们5.4加上13.8
那么这个
小数部分
在我们
做这样的一个加法运算的时候
我们首先要
固定小数点的位置
这个就是
这就是第一件事
然后我们去
小数做小数的运算
整数做整数的运算
因为
这个小数
如果运算结果有进位
我们这个进位
还必须要进到整数这一部分
所以这个显得很麻烦
不是麻烦
这个很多的工作
都是需要时间的
因此定点数的运算
它的第一大问题
就是它要去
编程的时候
要去确定小数点的位置
这个需要花比较长的时间
第二
定点数
很难去表示
两个相差极大的数
因为我们知道
计算机的
这个字长是有限的
计算机能够
表示的数的大小是有限的
像我们今天的计算机
微型计算机
通常是64位的
也就是说
我们能够直接处理
和表示的数
都是只有64位二进制码
这么大
那么假设
我们现在要去处理
这个我们整个这个任务中
又包含了
比如太阳的重量
那是10的几十次方 是不
二十多次方还是三十多次方
然后我们
还要同时要处理
电子的重量
那么就是
十的负二十多次方克
太阳是
十的正二十多次方克
所以
这样子两个数
相差就非常大
要想把这样两个数
在我们这里
同时能够表示
那么需要几百位字长
这么长
所以这样子
计算机是没办法处理的
再一个
对于定点数
如果比如我们一个
非常小的数
0.000000...几
那么就
可能出现一大堆的0
这一大堆的0
在内存中都是要占地方
所以这造成了
很多的稀疏问题
也就是说这内存的空间
浪费的很大
因此
在今天我们的计算机中
我们都没有在
对于数值表示的处理
我们不再采用
定点的表示方法
我们更多的都采用的是
浮点数的表示方法
所以下边
我们把简单的
把有关浮点数的概念
给大家描述一下
就是所谓浮点数
就是小数点的位置
可以来回移动的这种数
这个数
和刚才我们说
定点小数位有什么不同呢?
因为它的表示方法上
是不一样的
我们先说
它类似的地方
比如我们35
我们可以表示成
3.5×10
我们也可以表示成
0.35×10²
我们还可以表示成
0.035×10³
那么如果说
0.35×10²
这个就
我们也可以实际上
可以说0.35是一个定点小数
但是
它和浮点数的不一样
是浮点数有一个
非常明确的
或者说它一个
规范的一个表示方法
像刚才我们说的
这个0.35乘10的两次方
就是10的平方
这个0.35我们称为是尾数
那么10的平方
这个2就是称为阶码
10我们叫阶基
就是基础的意思
就是阶码的基是十进制
当然在计算机里面
我们都是二进制
比如2的10次方
或者是2的5次方
是这样的
阶基都默认是2了
那么 阶码有符号位
尾数也有正负符号位
所以它的阶码
和尾数的符号位
都各占一位
然后就是阶码的
这个长度
和尾数的长度
尾数就是我们说的
小数点后边的这一部分
这个部分
表示着整个的
以及它体现的
这个数的精度
而阶码
表示了整个浮点数
可以表示的范围
比如这个阶码
比如我们用八位二进制码
来表示阶码的话
那么也就是说
它的2的0次方
到2的255次方
这样的数
它都是可以表示的
这个显然
比我们前面说的
定点数的表示范围
要大的很多
所以
浮点数在这一点上
它克服了定点的一些
描述它的表示方法
它的缺点
也就是说它不再
去考虑小数点的位置
而且它可以
把这个数的表示范围
变得非常的大
而且
因为我们马上要说到的
因为有那个规格化的处理
所以它在内存中
占的空间也会是
比较紧凑的
因此
浮点在运算速度上
要比定点数运算
要快两个以上的数量级
所以它今天我们的计算机中
我们对于数值的处理
都是采用浮点数
来处理的
刚才我们说了
我们35
可以表示成3.5×10
也可以表示成0.35×10²
我们还可以表示成0.035×10³
等等依次类推
那么也就是说
你一个数像这样
可以有n多个表示方法
为了避免这样的问题
所以浮点数里边
我们称为一个叫
规格化浮点数
也就是说
不论你这个数
曾经是多大
总归把它规格化为
小数
而且是个纯小数
也就意味着
零点
这个小数点后面的第一位
一定不能是0
一定是个1
因为二进制你除了0
就是1 对吧
所以小数点后
第一位一定是1
这就叫规格化的
一个浮点数的表示方法
有了这样的一个规格化了
所以我们浮点数的表示
就是每一个数
它的表示方法
都是唯一的一种表示方法
这个就是
有关浮点数的概念
因为这部分
我们在这门课中
我们不太会涉及
更多的这种
后续内容
都不会涉及这一点
所以我们在这里
只是概述性的
给大家描述一下
建立一下
有关浮点的概念
因为毕竟我们今天的计算机
还是在以浮点数
对数值
都是以浮点数的形式来处理的
就是说对浮点数的
更进一步的表述
比如它的表示范围
它的规格化浮点数是怎么回事?
它怎么样去描述的等等
如果有兴趣的同学
你们可以去参阅
其他的一些资料
我们下边
主要来给大家介绍
有关机器数
就是说从数的这种
性质的角度的分类
它的无符号数
和有符号数
我们先来谈一下
无符号数
无论是无符号数
还是有符号数
从运算的角度
就是从算术运算的角度
它们都是二进制的算术运算
也就是加减乘除吧
那么
二进制的
加减乘除运算
要比十进制要简单的很多
因为它只有0和1两个符号
所以就是0+0=0
0+1=1
只有1+1=0
就是有进位
那么0-1=1
有借位
这个是加减运算
它这一个很容易的一个表述
那么 对于乘除运算
其实它的基本原理
跟我们十进制的乘是一样的
也就是
乘法会依次这样子错开 对吧
被乘数
乘数和被乘数
一位一位的乘
关键的特点是
因为
在二进制里
只有0和1两个符号
所以
如果乘数是0的话
被乘数
这一次
相乘的结果
就中间积
就全是0
乘数是1的话
那么中间积
就是被乘数本身
它就会移下来
它只不过要像这样错开
因为每一个中间积
像我们乘法
都是从右向左
这样一个个错开的
是吧
所以然后最后求和
所以乘法运算
实际上是一个
移位和加法合在一起的
一个运算过程
除法运算嘛
它就正好是逆过来
我们下边用一个例子
来说一下二进制乘法和除法
它有这样的一个特点
比如现在我们看的这个例
这个被乘数是1011
那么乘数是0100
0100等于十进制的几呢?
大家很容易看出来
就是4
那么这个
相乘的结果等于多少呢?
等于这个值
这个 我们看这样一个结果
我们会发现
被乘数原来有1011
这个结果还是有1011
只不过
和被乘数比较起来
被乘数最高原来是4位0
现在的结果里
最高只有两位0
那么
最高的那两位0
到哪里去了呢?
好像是到后边了
就是右侧
最低位了
是吧
那么如果我们现在
做个除法
我们会发现
被除数
还是原来还是1011
但是 除以
除以还是4
就是除数还是4
除完了以后
最低位的这两个11
没有了
结果成了这个值了
这个两个11到哪里去了呢?
两个11实际上是余数
所以从这个特点里
我们从这个例子里
我们可以总结出来
在二进制的乘除运算
实际上有着这样的一个特点
也就是说
当你的乘数是2
或者2的整数次方的时候
被乘数
相当于向左移动一位
或者是若干位
也就是说每乘以2
被乘数
相当于向左移动一位
然后在第一位不离
那么
对于除法运算呢?
就是说每除以2
被除数
相当于向右移动一位
左侧不离
那么
我们刚才看到
如果乘法1011
一乘 乘完后
是这样的结果
大家觉得很能接受
除法运算
把最低两位11给除没了
那好像大家觉得很奇怪
实际上没关系
这个就在余数里
余数 你如果觉得
可以忽略不计
那就不要了
如果你需要留下来
你可以把它留下来
这些我们后边学完指令
大家都会做这样的处理
这个是
无符号数的表示
和加减运算
总而言之
无符号数
它的最大特点
就是所有的0和1
都是有意义的数字
都没有任何的
符号的含义在里
这个就是无符号数
我们无符号数很简单
我们下边来说一下
有符号数的表示
有符号
我们说就是最高位
一定要是符号位
因为计算机
无法识别正和负
所有我们必须用
二进制的0和1来表示正负
所以 0
在符号位里就表示正
1表示负数
有符号数的表示方法
一共有三种
分别称为
原码 反码 和补码的表示方法
下边
我们把这三种表示方法
也给大家介绍一下
在介绍这三种方法之前
请大家务必要注意
一个数
到底是有符号数
还是无符号数
在我们计算机的底层
就是说计算机的硬件
是根本
没有办法去识别的
它永远就是
因为它计算机
是开关元件做的
也就是说逻辑器件来做的
0加0就是0
0加1就是1
它永远是这样
具体这个0和这个1
到底是属于什么性质的?
它不管 它不考虑
所以
我们就是之前
有同学总是提问
就是说你这个数据
到底是有符号数
还是无符号数
我说只有你知道
就只有程序员知道
虽然我们刚才说
我们在计算机里
今天默认的都是
按浮点运算
其实默认的
都是按符号数去处理的
但是
那个都是由编译器
去处理的
我们到后边来跟大家解释
我们
在这个数
到底是无符号还是有符号
实际上只有程序员
就是你自己肚子里知道
那么你要是无符号数运算
你后边必须用程序语言
去按照无符号数的处理方法
去处理它的结果
如果你认为
是有符号数运算
那么你也同样需要
用程序语言
去按有符号数的
处理方法去处理
这个也会
随着我们后续的内容学习
大家理解到这一点
这会儿大家就知道
有符号数还是无符号数
计算机的硬件
是根本无法识别的
这个是由
程序员自己去确定的
-第1讲 关于本课程
--关于本课程
-第2讲 微型计算机系统
--微机系统_01
--微机系统_02
-第3讲 微型计算机一般工作过程
-第4讲 数制与编码
--计算机中的编码
-第5讲 计算机中数的表示与运算
--数的表示
--符号数的表示
--数的表示与运算
-第6讲 基本逻辑运算与逻辑电路
-第7讲 本周小结
--本周小结
-第1周 微型计算机基础概论--第一周单元测验
-第8讲 8088微处理器
-第9讲 8088 CPU主要引线及机构
-第2周 8088微处理器--第二周单元测验
-第10讲 实模式存储器寻址
-第11讲 8088系统总线
--8088系统总线
-第12讲 微处理器小结
--微处理器小结
-单元测验--作业
-第13讲 指令概述
--指令概述
-第14讲 寻址方式
--寻址方式
-第15讲 通用数据传送指令
-第16讲 地址传送指令
--地址传送指令
-第17讲 输入输出指令
--输入输出指令
-第4周 数据传送指令--第四周单元测验
-第18讲 算术运算指令
--加法运算指令
--减法指令
--乘除运算指令
-第19讲 逻辑运算指令
-第20讲 移位操作指令
--移位操作指令
-第5周 算术运算、逻辑运算与移位操作指令--第五周单元测验
-第21讲 关于串操作指令的说明
--串操作指令说明
-第22讲 串传送与串比较
--串传送与串比较
-第23讲 串扫描指令
--串扫描指令
-第24讲 串装入与串存储指令
-第六周单元测验--作业
-第25讲 程序控制指令说明
-第26讲 转移类指令
--无条件转移指令
--条件转移指令
-第27讲 循环控制指令
--循环控制指令
-第28讲 过程调用指令
--过程调用指令
-第29讲 中断指令
--中断指令
-第30讲 处理器控制指令
--处理器控制指令
-第31讲 指令系统小结
--指令系统小结
-第7周 程序与处理器控制--第七周单元测验
-第7周 程序与处理器控制--第七周作业
-第32讲 汇编语言源程序
-- 汇编语言源程序_01
-- 汇编语言源程序_02
-第33讲 伪指令
--数据定义伪指令
--其它伪指令
-第34讲 系统功能调用
-第35讲 汇编语言程序设计示例详解
--程序设计示例1
-第36讲 汇编语言程序设计小结
-第8周 汇编语言程序设计--第八周单元测验
-第8周 汇编语言程序设计--第八周作业
-第37讲 半导体存储器概述
--半导体存储器概述
-第38讲 内存单元编址
--存储单元编址
-第39讲 随机存取存储器RAM
-- RAM_01
--RAM_02
-第40讲 只读存储器ROM
--ROM_01
--ROM_02
-第九周单元测验--作业
-第41讲 半导体存储器扩展
--存储器扩展_2
-第42讲 半导体存储器小结
--半导体存储器小结
-第十周单元测验--作业
-第十周作业--作业
-第43讲 基本I/O接口
-第44讲 简单接口芯片
--简单接口芯片
-第45讲 基本输入输出方法
--基本I/O方法
-第46讲 简单I/O控制系统设计
-第47讲 中断技术
--中断技术1
--中断技术2
-第48讲 输入输出与中断技术小结
--本周小结
-第十一周单元测验--作业
-第49讲 可编程定时计数器
-第50讲 可编程并行接口
-第51讲 可编程接口小结
--本周小结_01
--本周小结_02
-第十二周单元测验
-第52讲 模拟量的输入输出
--模拟量的输入输出
-第53讲 D/A转换器
-第54讲 A/D转换器
-- A/D转换器_01
-第十三周单元测验--作业
-第55讲 I/O接口系统综合设计示例详解I
-第56讲 综合设计示例详解II
-第57讲 结束语
--结束语