补码表示法
在计算机中,由于受设备位数的限制,所表示的机器数的位数是有限的。当位数为N时,只能表示2^N个不同的定点数,若超出范围,则产生溢出。此时,一般保留低N位,舍弃高位,因此,属于模运算,产生溢出是的量就是模。
补码可以使计算机运算变得简单。计算机中广泛应用。
计算机中将X对模M的补数称为X的补码。机器数的最高位为符号位,0表示正数,1表示负数,字长n+1位(数值为n位),真值X的补码定义如下:
X位定点整数时,
[x]补= |
{ |
x 2n>x≥0 2n+1+x=2n+1-|x| 0≥x≥-2n |
(mod 2n+1) |
X位定点小数时,
[x]补= |
{ |
x 1>x≥0 2+x=2-|x| 0≥x≥-1 |
(mod 2) |
8位机而言,补码所表示的数,罗列:
-128:1000000 -127:10000001 -1:11111111 0:00000000
1:00000001 127:01111111
因此,就可以看出其中的规律了。
8位二进制数,一共有256种表示,而补码的范围是-128----127,轮转。
对于定点小数,同理可得:
其范围是-1-----1-2^(-7)即:1.0000000-----0.1111111
加小数点就行了。
额外:
微指令和微操作
一台数字计算机基本上可以划分为两大部分---控制部件和执行部件。控制器就是控制部件,而运算器、存储器、外围设备相对控制器来说就是执行部件。那么两者是这么联系的呢?控制部件与执行部件的一种联系就是通过控制线。控制部件通过控制线向执行部件发出各种控制命令,通常这种控制命令叫做微命令,而执行部件接受微命令后所执行的操作就叫做微操作。控制部件与执行部件之间的另一种联系就是反馈信息。执行部件通过反馈线向控制部件反映操作情况,以便使得控制部件根据执行部件的状态来下达新的微命令,这也叫做“状态测试”。微操作在执行部件中是组基本的操作。由于数据通路的结构关系,微操作可分为相容性和相斥性两种。
在机器的一个CPU周期中,一组实现一定操作功能的微命令的组合,构成一条微指令。一般的微指令格式由操作控制和顺序控制两部分构成。操作控制部分用来发出管理和指挥全机工作的控制信号。其顺序控制部分用来决定产生下一个微指令的地址。事实上一条机器指令的功能是由许多条微指令组成的序列来实现的。这个微指令序列通常叫做微程序。既然微程序是由微指令组成的,那么当执行当前的一条微指令的时候。必须指出后继微指令的地址,以便当前一条微指令执行完毕以后,取下一条微指令执行。
机器指令和微指令的关系归纳如下:
1. 一条机器指令对应一个微程序,这个微程序是由若干条微指令构成的。因此,一条机器指令的功能是若干条微指令组成的序列来实现的。简而言之,一条机器指令所完成的操作划分成若干条微指令来完成,由微指令进行解释和执行。
2.从指令与微指令,程序与微程序,地址与微地址的一一对应关系上看,前者与内存储器有关,而后者与控制存储器(它是微程序控制器的一部分。微程序控制器主要由控制存储器、微指令寄存器和地址转移逻辑三部分组成。其中,微指令寄存器又分为微地址寄存器和微命令寄存器两部分)有关,与此相关也有相对应的硬设备。
3.从一般指令的微程序执行流程图可以看出。每个CPU周期就对于一条微指令。这就告诉我们怎么设计微程序,也将使得我们进一步体验到机器指令很微指令的关系。