运算方法和运算器(2)
1.数据与文字的表示方法
计算机中使用的数据可分成两大类
符号数据:非数字符号的表示 ASCII、汉字、图形
2.数值数据:数字数据的表示方式(定点、浮点)
计算机数字和字符的表示方法应有利于数据的存储、加工(处理)、传送;
编码:用少量、简单的基本符号,选择合适的规则表示尽量多的信息,同时利于信息处理(速度、方便)
1 数据格式
1.定点表示法
- 所有数据的小数点位置固定不变
- 理论上位置可以任意,但实际上将数据表示有两种方法(小数点位置固定-定点表示法/定点格式):
- 纯小数
- 纯整数
2.浮点表示法
小数点位置随阶码【也就是下面的指数E】不同而浮动
- 阶码;在表示一个浮点数的时候,要给出指数,用整数形式表示,常常称为阶码。
小数点位置随比例因子的不同而在一定范围内可以自由浮动,所以称为浮点数
任何一个数N 可以表示为:
尾数:是一个纯小数
E:是比例因子的指数,称为浮点数的指数,是一个整数
基数:一般是2或者10
浮点数的规格化表示:
(1.75)10 = 1.11 × 2 0 (规格化表示)= 0.111 × 2 1 = 0.0111 × 2 2
3.十进制数串的表示方法
- 字符串形式
一个字节存放一个十进制的数位或符号位。在主存中,这样的一个十进制数占用连续的多字节,故为了指明指明这样一个数,需要给出该数在主存中的起始地址和位数(串的长度)。这种方式表示的十进制字符串主要用在非数值计算的应用领域。
- 压缩的十进制数串形式
也就是一个字节存放2个十进制的数。比前一种形式更节省存储空间,有便于直接完成10进制的算数运算。
2.数的机器码表示
首先我们要知道几个概念
真值:一般书写的数
机器码:机器中表示的数,要解决在计算机内部数的正,负,和小数点运算的问题
- 源码
- 反码
- 补码
- 移码
1.原码表示法
- 定点小数 x0 . x1 x2…xn
例子:
x=+0.11001110 , y=-0.11001110
[x]原=0.11001110 ,[y]原=1.11001110
- 定点整数 X0X1X2…Xn
例子:
x=+11001110,y=-11001110
[x]原=011001110 [y]原=111001110
- 特点
- 表示简单,容易进行真值之间进行转换,实现乘除运算规则简单
- 进行加减法运算十分麻烦
2.补码表示法
- 例子
现为北京时间下午4点,但钟表显示为7点。有两种办法校对:
(1) 做减法 7-3 = 4 (逆时针退3格)
(2) 做加法 7+9 = 16 (顺时针进9格)
16 (mod 12) = 16-12 = 4 (以12为模,变成4)
mod 就是取模一样的,在数学上就是叫同余式。
- -4=+ 8 (mod 12 )
- -5 = +7(mod 12)
- 补码表示法
定义:正数的补码就是正数的本身,负数的补码是原负数加上模。
计算机运算受字长限制,属于有模运算.
- 定点小数x0 .x1 x2…xn ,以2为模
- 定点整数x0 .x1 x2…xn ,以2^n+1为模
补码最大的优点就是将减法运算转换成加法运算。通常不按表达式求补码,而通过反码来得到。
3.反码表示法
定义:正数的表示和原,补码相同,负数的补码符号位为1,数值位将源码的数值按位取反。
- 定点小数x0.x1x2…xn
X1=+0.1011011 , [X1] 反 =0.1011011
X2= -0.1011011 , [X2] 反 =1.0100100
[x ]补=[x ]反+2^-n(证明见书)
反码表示有正0和负0之分
4.移码表示方法
- 移码表示法(用在阶码中)
- 定点整数定义 [x]移=2n+x 2n >x≥-2n
- 00000000
11111111(-2n2n -1)
例
x=+1011111
原码为01011111
补码为01011111
反码为01011111
移码为11011111
特点:移码和补码尾数相同,符号位相反
5.题目:
例八:
设机器字长16位,定点表示,尾数15位
(1)定点原码整数表示时,最大正数是多少?最小负数是多少?
0 111 111 111 111 111 最大正整数
x=(215 -1)10=(+32767)10
1 111 111 111 111 111 最小负整数
x=(1-2 15)10=-(215 -1)10=(-32767)10
(2)定点原码小数表示 ,最大正数是多少?最小负数是多少?
0 111 111 111 111 111 最大正小数
x=(1-2 15)10
1 111 111 111 111 111 最小负小数
x=-(1- 2 15)10
例九:
假设由S,E,M三个域组成的一个32位二进制字所表示的非零规格话浮点数x,真值表示为:
问:它所表示的规格化的最大正数,最小正数,最大负数,最小负数是多少?
3.字符串和字符串的表示方法
- 符号数据:字符信息用数据表示:ASCII等
- 字符表示方法用ASCII:用一个字节来表示,低7位用来编码(128),最高位位校验位【这里有ASCII表】