第二章计算机中数的表示和计算
第二章计算机中数的表示和计算
一、定点数表示
* 小数点位置固定,放在字首称小数定点,放在字尾称整数定点
* 定点表示机器只能表示纯的整数或纯的小数,不能表示实数
1、无符号数:最高位不是符号位
(1)整数定点:小数点放在字尾
例:以8位二进制为例,格式如下:
0 0 0 0 0 0 0 0 真值为0
0 0 0 0 0 0 0 1 真值为1
1 1 1 1 1 1 1 1 真值为28-1=255
(2)小数定点:小数点放在字首
例:以8位二进制为例,格式如下:
0.0 0 0 0 0 0 0 0 真值为0
0.0 0 0 0 0 0 0 1 真值为2-8
0.1 1 1 1 1 1 1 1 真值为1-2-8
2、有符号数:最高位是符号位,有效数值相应少一位
(1)整数定点:小数点放在字尾,最高位为符号位S f
(2)小数定点:最高位为符号位S f,小数点放在S f之后
3、有符号数的码制
(1)原码
* 数值不变,正数符号位S f =0,负数符号位S f =1,“0”值形式不唯一例:X = +1010 则[X]原= 0,1010字符串长度什么时候算0
X = -1010 则[X]原= 1,1010
(2)补码
* 正数符号位S f =0,负数符号位S f =1
* 正数数值不变,负数数值各位取反,末位加1
* “0”值形式唯一
例:X = +1010 则[X]补= 0,1010 正数形式与原码一样
X = -1010 则[X]原= 1,0101 + 0001= 1,0110
附加:* 已知一个补码,求其负值的补码,只需连同符号位一起,各位取反,末位加1 * 变形补码:符号位取两位,则其含义如下:
00→表示正数、11→表示负数、01→表示正溢出、10→表示负溢出(3)反码
* 正数符号位S f =0,负数符号位S f =1
* 正数数值不变,负数数值各位取反
* “0”值形式不唯一
例:X = +1010 则[X]反= 0,1010 正数形式与原码和补码一样
X = -1010 则[X]反= 1,0101
(4)移码
* 正数符号位S f =1,负数符号位S f =0,与前三种码不同
* 正数数值不变,负数数值各位取反,末位加1,与补码相同
* “0”值形式唯一
例:X = +1010 则[X]反= 1,1010
X = -1010 则[X]反= 0,0101+ 0001= 0,0110 与补码就符号位不同
特点:直接从码的数值上,就可以判断出其真值的大小关系
二、浮点数表示
* 小数点的位置可以浮动,通过改变阶码值来实现
1、格式
阶符尾符
数学意义:N = S ×2J,S用纯小数,表数的精度,J用纯整数,表数的范围
例:设上述浮点格式n为8位,m为6位,均用补码,把(-17.25)表示成浮点数。
则(-17.25)二进制数对应为(-10001.01),变成数学形式(-0.1000101×2101),其中除了阶底2为十进制数,其余皆为二进制,阶码为101(即十进制的5),尾数小数点左移了五位。
按上述格式补齐数位,尾数在数后补0,阶码在数前补0。
则上数变为(-0.10001010×2000101),尾数补码(1,01110110),阶码补码(0,00010
1)。
该数值整体表示成:0,000101;1,01110110。
2、表数范围(仅描述正数区间,负数只差符号)
|X|MAX=(1-2-n)×2K,其中K=2m-1
|X|MIN=(2-n)×2-K,其中K=2m-1
注意:此区间没包括0值
3、0值的浮点表示
* 理解尾数的真正意义,表示数值序列,只是没有小数点
* 理解阶码的真正意义,表示小数点的具体位置,正数在数值序列的后面(值变大),负数在数值序列的前面(值变小)
* 0值的表示:数值序列为0,且值变为最小(阶码为负值,且绝对值最大)
例:设上述浮点格式n为8位,m为6位,均用补码,表示0值。
则0值表示成,尾数(0,00000000),阶码(1,000000),阶码为负值,且绝对值
最大。该0值整体表示成:1,000000;0,00000000。
注意:浮点0值若用补码表示则不是全0形式,硬件判断麻烦,所以有的机器数阶码用移码表示,尾数还用补码。
4、规格化
原因:保证有效数值尽可能最大化
形式:要求1>|S|≥(1/2),即尾数第一位S1=1
表数范围:|X|MIN=(2-1)×2-K,其中K=2m-1,|X|MAX同上
5、定点数与浮点数的比较
(1)字长一定时,定点表数精度高,浮点表数范围大;
(2)字长不同时(通常浮点表示字长要比定点表示长),浮点表数即精度高,又范围大;(3)浮点运算比定点运算慢,浮点数是两部分,要分别处理;
(4)判断溢出时,定点数判断数值本身,浮点数判断阶码。
三、定点数的运算
1、移位运算
(1)逻辑移位:最高位不是符号位
规则:左移低位补0,右移高位补0
(2)算术移位:最高位为符号位,保持不变,仅对数值操作
规则:正数数值操作,左移低位补0,右移高位补0,不考虑码制
负数数值操作,原码时,左移低位补0,右移高位补0
反码时,左移低位补1,右移高位补1
补码时,左移低位补0,右移高位补1
(3)算术移位对结果的影响
正数数值操作时,不考虑码制,左移高位丢1,错误,右移低位丢1,误差
负数数值操作时,原码时,左移高位丢1,错误,右移低位丢1,误差
反码时,左移高位丢0,错误,右移低位丢0,误差
补码时,左移高位丢0,错误,右移低位丢1,误差
注意:负数的补码可以理解为原码和反码的组合体,左为反码,右为原码
2、加减法运算
* 仅描述补码规则,因为补码减法实际也是加操作,硬件简单,没有减法器
基本公式:[A]补+[B]补=[S]补(mod M)
[A]补-[B]补=[A]补+[-B]补=[S]补(mod M)
规则:加法直接加上加数的补码,减法加上负值加数的补码
注意:已知加数的补码,只需把其连同符号位一起,各位取反,末位加1,即为其负值加数的补码
溢出判断规则:同号相加,结果异号,则溢出

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。