第六章 计算机的运算方法 6.1&6.2

计算机组成原理——数字
计算机中数的表示
计算机的运算方法
运算器的设计

第六章 计算机的运算方法

6.1无符号数和有符号数
一、无符号数
没有正负号
寄存器位数,反映无符号数的表示范围
如8位,表示范围00000000—11111111 即0–255
二、有符号数
有正负号,保存两部分,符号部分和数值部分
1.机器数与真值
保存在计算机当中的这些数叫机器数,真值就是平时用的数据的真实的值
真值:带符号的数 机器数:符号数字化的数
如真值:+0.1011
机器数:
第六章 计算机的运算方法 6.1&6.2
在计算机当中没有专门的硬件表示小数点,计算机中的小数点都是以约定的方式给出
如真值:-1100
机器数:
第六章 计算机的运算方法 6.1&6.2
2.原码表示法
规则:机器数的最高一位表示符号,“0”表示正号;“1”表示负号,后面各位用数的绝对值表示。
定点整数的原码形式为X0X1X2……Xn
X0是符号位

X为真值
N为整数的位数
第六章 计算机的运算方法 6.1&6.2
原码表示整数,其实是带符号的绝对值表示

定点小数的原码形式为X0X1X2……Xn
X0为符号位
X为真值
第六章 计算机的运算方法 6.1&6.2
第六章 计算机的运算方法 6.1&6.2
这个数据存储在计算机当中的话,无论是整数的逗号还是小数的小数点,都是不需要存储的,仅仅是人阅读方便

原码表示法优缺点:
简单直观
同样是加法的过程,如果用源码表示的话,可能是做加法也可能是做减法(有一个数为负,即为做减法),这对运算器来说太麻烦

能否只做加法?
找到一个与负数等价的正数 来代替这个负数,就可使 减—>加
3.补码表示法
一个负数加上“模”即得负数的补数
一个正数和一个负数互为补数时,
它们绝对值之和即为模数
整数的补码表示法:
第六章 计算机的运算方法 6.1&6.2
X为真值
n为整数的位数
如+1010,计算机在存储时,字长为5位,数值是4位,符号位是1位
【X】补=0,1010
X=-1011000,设计算机在存储时字长为8位的,其中有一位是符号位
【X】补=2^(7+1)+(-1011000)=1,0101000
小数的补码表示法:
第六章 计算机的运算方法 6.1&6.2
X为真值,2为模数
X=0.1110
[X]补=0.110
X=-0.1100000
[X]补=2+(-0.1100000)=1.0100000
求补码的快捷方式:
真值为负的数,符号位不变,数值位每一位取反后加一
4.反码表示法:
整数:
第六章 计算机的运算方法 6.1&6.2
小数:
第六章 计算机的运算方法 6.1&6.2
X为真值,n为数值位数
快速方式:负数的数值位按位取反
5.三种机器数小结:
最高位为符号位,书写上用“,”(整数)或“.”(小数)将数值部分和符号位隔开
对于正数。原码=补码=反码
对于负数,符号位为1,数值部分反码按位取反,补码按位取反后加1
数值0的补码表示唯一,原码反码不唯一
6.移码表示法
因为补码表示很难直接判断其真值大小
移码定义:
第六章 计算机的运算方法 6.1&6.2
移码对正数还是负数不做要求,没有区别,真值加2^n即为移码
X为真值,n为整数的位数
移码在数轴是上的表示:
第六章 计算机的运算方法 6.1&6.2
X=10100
【X】移=2^5+10100=1,10100
X=-10100
【X】移=2^5-10100=0,01100
移码注意:
①不管是正数还是负数,都是加2^n,把真值变换成移码
②只有整数形式的定义,没有小数形式的定义,这与移码在计算机的数据表示当中的作用有关,移码通常用来表示浮点数据表示的阶码部分,阶码都是整数
7.移码和补码的比较:
移码和补码只差一个符号位,数值位部分完全相同
如:设 x = +1100100,
[x]补 = 0,1100100
[x]移 = 2^7+ 1100100=1,1100100
设 x = –1100100
[x]补 = 1,0011100
[x]移 = 2^7– 1100100=0,0011100
从逻辑实现上讲,只用给数值部分加非门
0的移码唯一
最小真值的移码为全0
如:当n=5时,最小的真值为-2^5=-100000
[-100000]移=2^5-100000=000000

6.2数的定点表示和浮点表示
一、定点表示
小数点按约定方式标出,计算机中没有专门的硬件来表示小数点
定点机:小数定点机、整数定点机

定点表示:约定机器中所有数据的小数点位置是固定不变的。通常将数据表示成纯小数或纯整数
定点数x=x0x1x2…xn 在定点机中表示如下(x0表示符号位,0代表正号,1代表负号)
第六章 计算机的运算方法 6.1&6.2
定点整数的表示范围:
第六章 计算机的运算方法 6.1&6.2
定点小数的表范围:
第六章 计算机的运算方法 6.1&6.2
二、浮点表示
任意一个十进制数N可以写成:

一个任意进制数N可以写成:

其中: N为浮点数;M为浮点的尾数(纯小数,绝对值<=1)
e为阶码(浮点指数,整数);
R尾数的基数(常数,一般为2、8、16)
当R=2时,
N=11.0101
=0.1101012^10(10是二进制表示)
=1.10101
2^1
=1101.012^(-10)
=0.00110101
2^100
计算机中M是小数,可正可负,e是整数,也可正可负
浮点数: 是指小数点可浮动的数据。

1.浮点数的表示形式
浮点数的机内表示形式:
第六章 计算机的运算方法 6.1&6.2
Ms 是尾数的符号位, 设置在最高位上。数据本身的符号
Ms=0表示正号; Ms=1表示负号。
M为尾数, 有m位, 由Ms和M组成一个定点数。
E 为阶码, 有n+1位,在E的最高位设为符号位,
以表示正阶和负阶。阶码的小数点,在数值部分的最后

2.浮点数的表示范围
上溢、最小负数(负数区)最大负数、下溢、最小正数、(正数区)、最大正数、上溢
最小负数:[-2(2m-1)]*(1-2^-n)
最大负数:[-2-(2m-1)]*2^-n
最小正数:[2-(2m-1)]2^-n
最大正数:[2(2m-1)]
(1-2^-n)
m阶码位,n尾数位
若设m=4,n=10则:
最小负数:(-215)*(1-2-10)
最大负数:(-2-15)*2-10
最小正数:2-15*2-10
最大正数:215*(1-2-10)
此题的方式一共是16位长度表示浮点数,其中1位表示阶符。1位表示尾符,4位表示阶码,10位尾数的数值部分,能够表示的二进制数的个数是2^16

上溢:阶码>最大阶码 计算机按出错处理
下溢:阶码<最小阶码 按机器零处理

练习:设机器字长为24位,欲表示±3万的十进制数,试问在保证数的最大精度的前提下,除阶符、数符各取1位外,阶码、尾数各取几位?
因为214=16384,215=32768
所以如果是定点数
15位二进制数可反映±3万之间的十进制数
(2^15)0.……
M=4,5,6……
保证最大精度可取m=4,n=18
3.浮点数的规格化形式
为什么对浮点数进行规格化,作用是尽可能保证数据的精度
r=2(尾数的基数是2的话),进行规格化(则小数点后面)尾数的最高位为1,这个1是指它的真值
r=4(若尾数采用4进制,2位二进制数表示1位4进制数),进行规格化,尾数的最高2位不全为0
r=8,尾数的最高三位不全为0
因此尾数的基数不同,浮点数的规格化形式不同
4.浮点数的规格化
r=2,进行规格化
左规:尾数左移1位,阶码减1
右规;尾数右移1位,阶码加1
r=4,进行规格化
左规:尾数左移2位,阶码减1
右规;尾数右移2位,阶码加1
r=8,进行规格化
左规:尾数左移3位,阶码减1
右规;尾数右移3位,阶码加1
通过阶码左移右移和阶码的加减,来保证浮点数的真实值不发生变化
基数对浮点数有什么影响?
基数r越大,可表示的浮点数的范围越大
基数r越大,浮点数的精度降低
举例:
将+19/128写成二进制定点数、浮点数及在定点机和浮点机中的机器数形式。其中数值部分均取10位,数符取1位,浮点数阶码取5位(含1位阶符),尾数规格化
解:设x=+19/128
二进制形式 x=0.0010011
定点形式:x=0.0010011000
浮点规格化形式; x=0.1001100000
2^-10
10是2进制的4
定点机中:【x】原=【x】补=【x】反=0.0010011000
浮点机中:
【x】原=1,0010;0.1001100000
【x】补=1,1110;0.1001100000
【x】反=1,1101;0.1001100000
:将-58表示成二进制定点数和浮点数,并写出它在定点机和浮点机中的三种机器数及阶码为移码、尾数为补码的形式(其他要求同上例)
解:设x=-58
二进制形式:x=-111010
定点表示:x=-0000111010
浮点规格化形式:x=-(0.1110100000)*2^110
定点机中:
【x】原=1,0000111010
【x】补=1,1111000110
【x】反=1,1111000101
浮点机中:
【x】原=0,0110;1,1110100000
【x】补=0,0110;1,0001100000
【x】反=0,0110;1.0001011111
【x】阶移、尾补=1,0110;1,0001100000
特例:机器零
当浮点数尾数为0时,不论其阶码为何值按机器零处理
当浮点数阶码等于或小于它所表示的最小值时,不论尾数为何值,按机器零处理
如m=4,n=10
当阶码和尾数都用补码表示时,机器零为
……,……;0,0……0
1,0000;……,……(阶码=-16)
当阶码用移码,尾数用补码表示时,机器零
0,0000;0,00……0
有利于机器中“判0”电路的实现
三、IEEE 754标准
浮点数:
第六章 计算机的运算方法 6.1&6.2
短实数、长实数
临时实数:
符号位1,阶码15,尾数64,总位数80
尾数用规格化表示
非0的有效位最高位为1(隐含)