当前课程知识点:微机原理与接口技术 >  第1周 微型计算机基础概论 >  第5讲 计算机中数的表示与运算 >  符号数的表示

返回《微机原理与接口技术》慕课在线视频课程列表

符号数的表示在线视频

符号数的表示

下一节:数的表示与运算

返回《微机原理与接口技术》慕课在线视频列表

符号数的表示课程教案、知识点、字幕

好 我们下面来说一下

首先来说一下原码

原码就是

用0

用最高位是符号位

其余就是数值部分

所以原码

如果可以简单的

可以这么表示

也就是说符号位加绝对值

那么符号位

我们刚才说

正数是用0来表示

负数用1来表示

我们在十进制数里

我们说那个正号

实际上一般是不写的 对吧

没人说10

一定要写成正10

只有是负10的时候

那个负号才会写

但是在二进制数里

符号位是必须要写出来

是0就是0

是1 就是正数必须有0

负数必须有1

这个0是不能省略的

这个是原码的一种表示

这个原码的表示方法

大家一看

就觉得太好理解了

这跟和我们人的习惯

完全是一样的

但是这种表示方法

其实在今天用的并不多

为什么呢?

就是

它虽然这么简单

这是它的好处 对吧

但是它有一个巨大的不足

我们现在想

如果我们要去做一个

两个数去做

相加

我们首先

要是如果原码表示的话

作为计算机

就是从人来讲

我们首先要去判断

这个两个数的性质

是不是一样的

也就是说它到底是不是

都是同符号

还是异符号

如果是同符号

那么两个数相加

那就是相加

如果是异符号

那就变成相减

相减完了

那么现在

到底相减的结果

是正还是负

我们还要去判断

这两个数到底哪一个

绝对值大

然后

最后结果

符号位

和那个大的数

绝对值大的那个符号

是一致的

所以这个

这些过程

在我们的人的脑袋里

可能是

一瞬间

计算机当然更是一瞬间

但是再一瞬间

它也需要花时间

所以它很麻烦

再一个 原码的

因为这样子的一个麻烦

所以我们实际上

它就变得比较慢了

对吧

另外原码的

一个不足的地方是

0的原码不为1

我们说0

实际上是数字

或者说数学运算的一个基数

比如它的基准

一个基准

它都不为1

这个是很麻烦

怎么不为1法

我们现在来看一下

比如我们说正0

因为正号用0来表示之外

这个就是正0的原码

那么还可能有负0

负的话我们

负号用1来表示

这就是负1

所以

有正0和负0之分

这个连基线都不一致

所以这个就

变得比较麻烦

因此在今天的计算机中

特别是加减运算中

这绝对不使用原码来表示

好了

为了解决这个问题

又有另外一种表示方法

叫反码

反码的定义是这样

如果这个数是正数的话

它的反码

就和原码是一样的

如果这个数是负数的话

那么它是在原码基础上

符号位不变

其余数字部分

按位取反

这就得到了反码

比如我们来看一个例子

假设这个X等于-52

52我们通过

除2取余

我们转换成二进制数

就是这样一个值

0110100

对吧

这个负号继续写在这里

那么X的原码等于多少呢?

我们把这个负号用1来表示

这就是X的原码

那么

因为它是负的

所以它的反码

和原码不一样

它的反码是符号位不变

数值部分

按位取反

这就是它得到了

它的反码

那么

有了这个反码

解决没有解决

刚才我们原码那样的一个问题

我们来看一下

首先

我们就来看一下0的反码

0的反码

我们刚才说

正0的原码是

比如用八位二进制

来做例子的话

正0的原码

就是八位0 对吧

那么因为

正0的反码

和正0的原码是一样的

所以正0的反码

也是这样

但是负0

因为负数的补码和原码

负数的反码和原码不一样

所以

负0的反码

就得到了这个值

有人告诉你

这八个1

它实际上表示0

这个我们从直观上感觉

也好像很难接受

而且

这也没有解决0的

这个唯一性问题

所以

反码在今天的计算机中

实际上也没有使用

那么我们今天使用的

最频繁的

或者说大家

默认的一种方式是什么呢?

是补码

补码的含义

它的定义是这样

就是如果

对于一个正数来讲

补码和它的反码

和它的原码

都是一样的

那么

对于一个负数来讲

补码和原码就不一样了

它是在

原码的基础上

符号位不变

其余数字部分

按位取反再加1

也就是说

补码是

对于一个负数的补码

是它的反码

再加1

这样得到这样的一个结果

我们也同样做一个例

还是刚才那个-52

通过除2取余

我们得到了它的真值

是这样的一个值

好了

那么它的原码

就是这样一个值

因为这是一个负的

所以它的反码

就是符号位不变

其余数值部分

按位取反

就得到这么一个值

然后它的补码

是在反码的基础上

再加1

就得到了这样一个值

这就是补码

我们看一下

补码解决没有解决

我们刚才

总是纠结的

那个0的

唯一性问题

对于一个正数

也就是正0的补码

因为和原码一样

所以 这个

还是这个八个0

我们用八位0

十六位0

二十四 三十二位0

都是这样的一样的

所以我们现在

这门课里为了简答起见

我们不再考虑

你今天的计算机是64位的

我这里顺便说一下

就是说

我们都是用8位

做例子来介绍

其实它的字长嘛

都没有什么关系

所以这个用8位

简单一点

这是

正0的补码

和它的原码是一样的

都是八个0来表示

那负0呢?

我们来看一下

负0的补码

等于负0的反码加1

那么负0的反码

刚才我们已经说了

如果用八个1来

用八位来表示的话

是等于是八个1

那么

再加1等于多少呢?

得到了这个值

这个值

就多出来了一个1

就最高位我们看

多出来这个1

这个多出来这个1

假设我们现在的路

就只有这么宽

也就是说只有八位

这个通道

那么这个1

等于相当于被挤下去了

这个1

那么在我们现在

能够看到的

这个八位字长的

这个范围内

我们已经看不到那个1了

我们看到的是八个0

这个就变成了

和正0的补码

变成一样的形式了

所以

补码就解决了

这个0的唯一性问题

我们下边

来对补码做一个说明

假设

我们补码来自于

实际上来自于

一个同域的概念

我们用一个

我们经常带的手表

这样一个例子来

来举例

我们如果现在想

从5点拨到1点

我们实际上

可以有两种拨法

我们既可以顺时针拨

我们也可以逆时针拨

我们逆时针可以

5-4=1

顺时针拨呢

我们可以

5再一直拨过去

从5一直绕过去

对吧

加上8

最后也可以等于1

这就是

我们的拨表的

两种方式

为什么我们这两种方式

都能拨出1呢?

是因为

我们现在

手表是以12为模的

在这个12为模的

这样子的一个前提下

就有了

这样子的一个表达式

我们看上去

很怪异的一个表达式

就是5-4=5+8

这个放到别的地方

实际上

如果去掉这个模12

这样子的一个

前提的话

这个表达式肯定是不成立的

但是

在模12

这样的一个前提下

这个表达式

就变成了成立

在这个表达式

意味着什么呢?

意味着这个-4和8

是互为补数的

也就是说

负数的补数

或者说我们说

它的补码

等于12-4=8

就得到了这样一个结果

因此

这个结果

我们用这样的

一个表达式

可以表示成这样

就是说5-4

等于5加-4

等于5+12-4

等于5+8

最后等于12+1

因为12是模

把12去掉

就等于1

就成了这样一个结果

所以

这个补码带来的一个

巨大的好处

从底下这个表达式

就可以得出来

它就是

主要引入补码的理由是什么?

就是要希望

能够将减法运算

转换为加法运算

这个最早的来源

是因为我们

当初的硬件

实在太贵了

我们希望能够

越便宜越好 对吧

所以 我们希望

我们在这个运算器里

最好就只有加法

即加减乘除

我们最好都只有加法器

所以

有了加法器以后

我们要做减法怎么办呢?

我们通过补码的形式

把减法变成加法运算

然后再去求和

实际上乘法运算

刚才我们说

就是

大家去仔细琢磨琢磨

乘法就是不断的

去和中间积乘

然后最后

把中间积一个一个的

通过这样子向左的移动

然后再加起来

所以 乘法

实际上是移位和加法的运算

除法

是移位和减法的运算

因为它是乘法的逆运算

而减法

又通过这样的补码的形式

也变成了加法的运算

所以就

总而言之

加 减 乘 除

都可以把它变成

加法和移位的操作

这样我们硬件

就可以简单一点

而且就可以便宜一点

这也就是

我们补码的一种

主要的利用

所以

补码的运算

就是将减法运算

变成了加法运算

它的推理

是可以这样

X+Y的补码

等于X的补码

加Y的补码

那么X-Y的补码

可以等于

X加负Y的补码

也就是等于

X的补码

加负Y的补码

最后

就可以得出

变成把减法运算

变加法运算了

我们下面用一个例子

来看一下我们

比如我们用十进制来表示

我们要做一个

66-51的运算

66-51

就等于66

加-51

等于15 对吧

这个是大家做这个运算

没问题

那么我们要

计算机要做这么一个工作呢?

我们当然要把它

转换成二进制数

所以

转换完了以后的结果

就是这样

66因为它是正数

所以它的补码

和它的原码

是一样的

所以

经过除2取余

就得到了这样的一个结果

这就是66的二进制数

那么51呢?

因为

它是负的

那么它的原码

没问题

符号位加数值部分

这个数值部分

大家现在反应过来了

就是它的绝对值 对吧

51我们除2取余

得到了这个绝对值

然后这个负号

用1来表示

所以这就是-51的原码

按照我们刚才说的

用补码来做的话

我们

把这个原码

要转换成补码

因为它的是负数

所以它的补码

不等于原码

是原码基础上

符号位不变

绝对值这一部分

按位取反加1

这就得到它的补码

然后

我们做

X+Y的这个补码

用加法

来做这样的一个运算

相加的结果

就得到了这么一个值

同样的

因为最高位

这个红颜色这一位

已经超出了

我们八位的有效字长

所以

它就已经看不到了

看不到了

我们就认为

它已经没有了

我们

当然你后面学了会知道

我想有的话

我也可以把它拿出来

我现在不想有了

我们就看不到了

所以我们看到的

最后的结果

就是这个00001111

而这个结果正好就等于

十进制的15

和我们前面的

十进制运算的结果

是一样的

这个是二进制的补码

从这个例子里

我们证明了

补码它的意义

或者它的价值

它既解决了0

唯一性问题

又使得

把减法运算

变成了加法运算

我们再来

看一个例子吧

这个例子是

X等于

这样子的一个-52

那么

转换成二进制

就是这样一个值

Y等于正的116

那么

现在要你求

X+Y等于多少?

当然大家

如果用笔头来做的话

当然这种问题

对大家很简单

我们现在模拟一下

计算机做这件事情的过程

首先 计算机

会把他们全部都翻译成

补码的形式

对于X来讲

同样的

因为它是负的

所以它的原码

是这样一个值

那么它的补码

是原码基础上的一个变换

那么 Y是正数

所以它的原码和补码

是一样的

那么

做这样X+Y的运算

相加的结果

是这样的一个

过程

然后最后

得到这么一个结果

这个结果大家看

最高位是正

对吧

最高位是0

是正数

所以

因为最高位是0

所以

这个X+Y的补码

是正数

因为

是正数

所以

它就等于

X+Y的原码

也就等于它

大家听我们再说一遍

因为

这个相加的结果

最高位是0

表示这个数是正数

我们说

一个正数的补码

就等于它的原码

所以就是说

X+Y的补码

现在等于这个01000000

所以X+Y的原码

也就等于01000000

那OK了

X+Y

因为原码的定义是

符号位加绝对值

所以现在后面

就是它的绝对值

这就是X+Y的值

这个是补码的表示

以及它的价值

或者说它的意义

在今天的计算机中

因为补码实现了0的唯一

又使得

将减法运算

变成了加法运算

所以

我们今天计算机中

默认的所有的符号数

都是以补码的形式

来表示

事实上

我们又回到刚才那个问题

我们说这个数是

性质到底是符号数

还是无符号数

实际上是指硬件系统

是无法实现的

是无法识别的

那么

今天我们在编程序的时候

不论用哪一种语言

即使用我们后边要学到的

汇编语言这样的低级语言

我们依然是用

助记符形式来描述的

不是用0和1这样的机器语言

来描述的

那么 所以

我们今天

所编写的程序

都是具有一个编译的过程

那么

编译器

它就在做

这样的一个转换

或者说这样一个识别的过程

我们假设

大家未来

我们实际

学完第四章

我们在这样的一个环境下

大家去编汇编程序的时候

我们可以做这样的一个测试

比如你定义了一个数

它是一个负数

假设你输入一个-3

-3输入的时候

你写的是-3

没有问题

但是经过编译以后

你再去进到调试环节下

你去看这个-3

你已经看不到这个-3了

看到的是什么呢?

是这个FDH

为什么是FD呢?

FD就是11111011

对吧

那么为什么是这个呢?

我们大家可以自己去

测算一下

这个11111011

正好就是-3的补码

这就是

我们

编译器

为大家做的一件工作

微机原理与接口技术课程列表:

第1周 微型计算机基础概论

-第1讲 关于本课程

--关于本课程

-第2讲 微型计算机系统

--微机系统_01

--微机系统_02

-第3讲 微型计算机一般工作过程

--微机的一般工作过程_01

--微机的一般工作过程_02

-第4讲 数制与编码

--常用计数制及其转换

--计算机中的编码

-第5讲 计算机中数的表示与运算

--数的表示

--符号数的表示

--数的表示与运算

-第6讲 基本逻辑运算与逻辑电路

--基本逻辑运算与逻辑门

--常用逻辑运算及电路

-第7讲 本周小结

--本周小结

-第1周 微型计算机基础概论--第一周单元测验

第2周 8088微处理器

-第8讲 8088微处理器

--8088 CPU_01

--8088 CPU_02

-第9讲 8088 CPU主要引线及机构

--8088 CPU主要引线

--8088 CPU内部结构

--8088 CPU内部寄存器

-第2周 8088微处理器--第二周单元测验

第3周 实模式存储器寻址与总线

-第10讲 实模式存储器寻址

--实模式存储器寻址_01

--实模式存储器寻址_02

--实模式存储器寻址_03

-第11讲 8088系统总线

--8088系统总线

-第12讲 微处理器小结

--微处理器小结

-单元测验--作业

第4周 数据传送指令

-第13讲 指令概述

--指令概述

-第14讲 寻址方式

--寻址方式

-第15讲 通用数据传送指令

--通用数据传送指令_01

--通用数据传送指令_02

--通用数据传送指令_03

-第16讲 地址传送指令

--地址传送指令

-第17讲 输入输出指令

--输入输出指令

-第4周 数据传送指令--第四周单元测验

第5周 算术运算、逻辑运算与移位操作指令

-第18讲 算术运算指令

--加法运算指令

--减法指令

--乘除运算指令

-第19讲 逻辑运算指令

--逻辑运算指令_01

--逻辑运算指令_02

-第20讲 移位操作指令

--移位操作指令

-第5周 算术运算、逻辑运算与移位操作指令--第五周单元测验

第6周 串操作指令

-第21讲 关于串操作指令的说明

--串操作指令说明

-第22讲 串传送与串比较

--串传送与串比较

-第23讲 串扫描指令

--串扫描指令

-第24讲 串装入与串存储指令

--串装入与串存储指令

-第六周单元测验--作业

第7周 程序与处理器控制

-第25讲 程序控制指令说明

--程序控制类指令说明

-第26讲 转移类指令

--无条件转移指令

--条件转移指令

-第27讲 循环控制指令

--循环控制指令

-第28讲 过程调用指令

--过程调用指令

-第29讲 中断指令

--中断指令

-第30讲 处理器控制指令

--处理器控制指令

-第31讲 指令系统小结

--指令系统小结

-第7周 程序与处理器控制--第七周单元测验

-第7周 程序与处理器控制--第七周作业

第8周 汇编语言程序设计

-第32讲 汇编语言源程序

-- 汇编语言源程序_01

-- 汇编语言源程序_02

-第33讲 伪指令

--数据定义伪指令

--符号与段定义伪指令

--汇编语言源程序结构例

--其它伪指令

-第34讲 系统功能调用

--系统功能调用_01

--系统功能调用_02

-第35讲 汇编语言程序设计示例详解

--程序设计示例1

--汇编语言程序设计示例_02

-第36讲 汇编语言程序设计小结

--汇编语言程序设计小结

-第8周 汇编语言程序设计--第八周单元测验

-第8周 汇编语言程序设计--第八周作业

第9周 半导体存储器

-第37讲 半导体存储器概述

--半导体存储器概述

-第38讲 内存单元编址

--存储单元编址

-第39讲 随机存取存储器RAM

-- RAM_01

--RAM_02

-第40讲 只读存储器ROM

--ROM_01

--ROM_02

-第九周单元测验--作业

第10周 半导体存储器扩展技术

-第41讲 半导体存储器扩展

--半导体存储器扩展_1

--存储器扩展_2

--半导体存储器扩展_3

-第42讲 半导体存储器小结

--半导体存储器小结

-第十周单元测验--作业

-第十周作业--作业

第11周 输入输出与中断技术

-第43讲 基本I/O接口

--I/O系统概述_01

--I/O系统概述_02

-第44讲 简单接口芯片

--简单接口芯片

-第45讲 基本输入输出方法

--基本I/O方法

-第46讲 简单I/O控制系统设计

--简单I/O控制系统设计1

--简单I/O控制系统设计2

-第47讲 中断技术

--中断技术1

--中断技术2

-第48讲 输入输出与中断技术小结

--本周小结

-第十一周单元测验--作业

第12周 可编程并行数字接口

-第49讲 可编程定时计数器

--可编程定时计数器8253_01

--可编程定时计数器8253_02

--可编程定时计数器8253_03

-第50讲 可编程并行接口

--可编程并接口8255_01

--可编程并行接口8255_02

--可编程并行接口8255_03

-第51讲 可编程接口小结

--本周小结_01

--本周小结_02

-第十二周单元测验

第13周 模拟量的输入输出

-第52讲 模拟量的输入输出

--模拟量的输入输出

-第53讲 D/A转换器

--D/A转换器_01

--D/A转换器_02

-第54讲 A/D转换器

-- A/D转换器_01

--A/D转换器_02

-第十三周单元测验--作业

第14周 系统综合设计示例详解

-第55讲 I/O接口系统综合设计示例详解I

--综合设计示例详解I_01

--综合设计示例详解I_02

-第56讲 综合设计示例详解II

--综合设计示例详解II_01

--综合设计示例详解II_02

-第57讲 结束语

--结束语

符号数的表示笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。