计算机组成复习--计算机系统中的数据表示

本文深入解析了补码的概念及其在定点数和浮点数表示中的应用,包括补码的算术运算规则,以及浮点数表示法的特性与限制。文章详细阐述了补码如何简化加减运算,以及浮点数如何通过规格化形式来提高精度与表示范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于某一确定的模,某数减去小于模的另一个数,总可以用该数加上模与另一个数绝对值之差来代替。(这就是为什么可以用补码进行加减运算的原因)

 

原码(true form)原码体现了数据的绝对值

定点小数的原码定义如下:

  【x】原 =  if 0<=x<1, x

                 if -1<x<=0, 1-x = 1+|x|

定点整数的原码定义如下:

  【x】原= if 0<=x<2^(n-1), x

               if -2^(n-1)<x<=0, 2^(n-1)-x

 

补码

定点小数的补码定义如下:

  【x】补= if 0<=x<1, x

                   if -1<=x<0, 2+x                 (模2)

定点整数的补码定义如下:

  【x】补 = if 0<=x<2^(n-1), x

                  if -2^(n-1)<=x<0, 2^(n)+x                (模2^n)

 

正数的补码与其原码相同,负数补码求解的一个简便方式:符号位不变,数值部分自低向高位搜索,第一个1及其以右的各位0保持不变,以左的各位按位取反。

补码的符号位扩展:

结论1:要将n位纯小数补码变为2n位,只需在末尾添加n个0即可。

结论2:要将整数补码的模扩大2^n倍,只需将符号位向左复制n位即可。

补码的算术右移(除2运算)

结论:若已知【x】补求【0.5x】补,可将【x】补连同符号位在内右移1位,同时符号位保持不变。

补码的算术左移(乘2运算)

结论:已知【x】补求【2x】补,只需要将【x】补的各位左移1位,末位补0.

 

反码

定点小数的反码如下:

【x】反 = if 0<=x<1, x

                 if -1<x<=0, (2-2^-(n-1))+x

定点整数的反码如下:

【x】反=if 0<=x<2^(n-1), x

                if -2^(n-1)<x<=0, (2^(n)-1)+x

正数的反码与原码相同,负数的反码为该负数对应的原码符号不变,数值位按位取反。

 

移码

由于浮点数的阶码使用移码,所以只介绍定点整数的移码

【x】移 = 2^(n-1)+x

原码和反码的表示范围相同,补码的移码的表示范围相同。

【x】移----》符号取反《---【x】补

 

浮点数

因为无论采用定点,还是浮点表示,n位编码总是最多只能表示2^n个数,所以采用浮点表示法虽然扩大了表示范围,但没有增加可表示的数值的个数,只是数据间的间隔主稀疏了。

浮点数的表示范围主要由阶码决定,精度则由尾数决定。为了尽可能多地保留有效数字的位数,使有效数字尽量占满尾数数位,通常采用浮点数规格化形式,即将尾数的绝对值限定在某个范围内。

如果阶码的底为2,则规格化浮点数的尾数应满足:1/2<=|M|<1

M>=0,M=0.1xxxx...x                  M<0, M= 1.0xxx...x

尾数采用补码表示。为了使计算机判断方便,一般不把【-1/2】补(1.1000.000)列为规格化的数,而把【-1】补(1.000.000)列为规格化的数。

 

最后欢迎大家访问我的个人网站: 1024s

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值