计算机组成原理---运算器

定点数的表示


定点表示:约定机器中所有数据的小数点位置固定不变。由于约定在固定的位置,小数点就不在在使用" . " 来表示


通常将放到数值位最后面或者最前面,这样数据表示成纯整数或纯小数

无符号数的表示
用全部二进制代码表示表示数字,没有符号位
8位二进制无符号数范围
(00000000~11111111 )0~2^8-1(0~255)共256个数

有符号数的表示方法
定点数x =x0 x1 x 2 … xn,在定点机中表示如下(x0: 符号位,0代表正号,1代表负号)


纯小数的表示范围为 
( x0x1x2...xn数值位各位均为0时,绝对值最小;数值位各位均为1时,绝对值最大)
0  ≤  |x| 1 - 2^(-n)
-( 1 - 2^(-n) )  ≤  x < 1 -  2^(-n)


-0.11...... 1  ≤  x  ≤   + 0.11 ...... 1
   (n个1)                 (n个1) 

用八位二进制

-0.1111111  ≤   x   ≤   0.1111111

(1111,1111)         (0111,1111)

-  ( 1  -  2 ^ (-7) )  ≤    x   ≤ ( 1   -  2 ^ (-7) )

纯整数的表示

纯整数的表示范围为
(x0 x1 x2 ...xn数值位各位均为0时绝对值最小;数值位各位均为1时绝对值最大)
-( 2^n - 1) ≤   x   ≤   2^n  -  1
0  ≤  | x | ≤  2^n - 1
-11...... 1  ≤  x  ≤  +  11 ...... l

32位二进制数定点整数可以表示的范围

-11... .... ... 1   ≤   x   ≤   11... ... ... 1

       31个1                          31个1

(111……1)                   (011……1)

-( 2^31 - 1)  ≤   x   ≤  2^31 - 1

原码表示法
原码就是数值的真值(绝对值)前面加上一个符号位(正数0、负数1)

(1)x和一x的原码转换:
将 [x] 的符号位(左端第一位)取反,即可得到 [-x ]

(2)原码中0的表示不唯一


纯小数:[+0 ]原=0.00...0       [一0]原 =   1.00...0

纯整数:[+0]原=00...0,         [一0]原=100…0


(3)若原码字长为n,总共有2"个编码,但对应的真值只有2”—1个
因为[0]原占用了两个编码,因此原码表示的范围较小(2"个编码只能表示2"一1个真值
注意与补码的不同

移位原则

对于原码左移添0  右移添0


优点原码简单易懂,与真值转换容易,实现乘除法方便。(乘除法数值位由两数的绝对值相乘
除得到,符号位由两数的符号位异或即可)


不足①原码中0的表示有两种,给使用带来了不便;
②原码表示的加减法运算复杂,这是因为:当两数相加时,如果是同号则数值相加;如果是异号,则要进行减法。

而在进行减法时还要比较绝对值的大小,然后大数减去小数,最后还要给结果选择符号

补码的性质:
补码 = M + X( 模 + 真值)

(1)几个特殊数值的补码表示:
0的补码表示
[+0]补 = [-0]补 = 2 + 0.00...00 = 0.00...00  (纯小数mod 2)
[+0]补 = [-0]补 = 2" ± 00...00 = 0... 00  (纯整数mod 2"1)

注意 0的补码表示只有一种形式

 

[x] 和 [一x]的关系
已知 [x]补,将 [x]补 的各位(含符号位)取反然后在最低位上加1,即得到 [一x] 补,反之亦然

补码的算术移位规则:
补码的左移(乘2):符号位不变,数值部分左移,最低位移出的空位填0
补码的右移(除2):符号位不变,数值部分右移,最高位移出的空位填符号位

补码的位扩展
例如将字节(8位二进制)表示的补码扩展为16位二进制表示的补码
定点小数:在最低位用0扩展
定点整数:在最高位用符号位扩展

常用求补码的方法(与定义求补码比较):
a.若x>=0 则 [x]补 = x,符号位为0
若 x<0 ,则将 x 绝对值的各位取反,然后在最低位上加1,符号位为1,即得到 [x] 补。
b. 若 x0 数值位不变,符号位为 0.
若 x<0,数值位从最低位开始,对遇到的0和 第一个1取其原来的代码,对第一个以后开始直至最高位均按位取反,符号位为1。

移码和补码符号位相反

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值