计组—原码、补码、反码、移码复习

进制之间的转换(略)

unsigned integer (无符号整数)

1. 8位二进制数表示的范围:2^8-1 (减1位二进制的减法运算)

解析:8位二进制数所表示的范围为:00000000 ~ 11111111 ,即最小为00000000 最大为11111111,那么

最大值11111111 = 100000000-1 = 0 ~ 2^8-1

注意:100000000-1 为二进制的减法运算

 

2,n位二进制数表示的范围为:0 ~ 2^n -1 (计算方式同上)

 

有符号的数表示方法:

定点数x=x0x1x2......xn在定点机器中表示如下(x0:符号位,0代表正号 1代表负号,x1...xn表示数值;即共有n+1位,其中n位为数值)

1.8位纯小数的表示范围:-0.1111111 ~ +0.1111111

 其中0.1111111=1 - 0.0000001 = 1 - 2^-7,所以范围为-(1-2^-7) ~ +(1-2^-7)

注意:0.1111111=1 - 0.0000001 = 1 - 2^-7为二进制减法运算,且由于带有符号,所以数值位只有8-1=7位

 

2,n位纯小数二进制数表示的范围为:-(1-2^-n)~ +(1-2^-n) (计算方式同上)

3,n位纯整数二进制数表示的范围为:-(2^n -1)~ +(2^n -1) (计算方式同上)

 

计算机的机器码

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

例:如下式子中[x]原是机器数,x是真值

x=+0.1001, 则 [x]原=0.1001  (加粗的第一个0表示正数)

 x=-0.1001, 则[x]原=1.1001  (加粗的第一个1表示负数)

 

原码:一个8位二进制的数对应有2^8=256个编码(8位中包含1位符号位),所表示的真值的范围为-(2^7-1) ~ +(2^7-1) 即:-127 ~ +127可以表示的数值个数为127+127=254 加“0”数值得到254=1=255;即原码中256个编码只能表示255个数,原因是0占了两个编码 

正0和负0:+0=0000 和 -0=1000

源码的移位规则:符号位不变,数值部分左移或右移,移出的空位补“0”。(左移一位相当于乘以2,右移一位相当于除以2)

 

十进制转二进制技巧性做法

 

补码

补码的定义:[X]补 = M + X ; 即X的补码就等于模加上真值X本身,M表示模

x>=0时,M+X大于M,把M丢掉,所以[X]补=X,即正数的补码等于其本身

x<0时,[X]补=M+X=M-|X|,所以负数的补码等于模与该数绝对值之差

 

模的大小:

纯小数补码表示的模M=2,纯整数补码表示的模M=2^(n+1) ,其中n为数值位位数

 

补码的性质:

(1).0的补码表示

纯小数:[+0]补=2+0.00 = 0.00;[-0]补=2+(-0.00)=0.00 

纯正数:[+0]补=2^(n+1)+000=000 ;[-0]补=2^(n+1)+(-000)=000

即:0的补码表示只有一种形式就是0

(2).-1和-2^n的补码表示(注意与原码的表示范围比较)

n+1位纯小数补码:

[-1]补=2+(-1)=10.00+(-1.00)=1.00    =[-0]原

纯小数原码表示中[-1]原是不能被表示的,因为n位纯小数二进制数表示的范围为:-(1-2^-n)~ +(1-2^-n)即2^-n -1为原码的最小值而这个数肯定是要大于[-1]的,因此[-1]无法用原码表示

n+1位纯整数补码:

[-2^n]补=2^(n+1)+(-2^n)=100...0+(-10...0)=10...0

纯整数原码表示中[-2^n]原是不能被表示的,因为n位纯整数二进制数表示的范围为:-(2^n -1)~ +(2^n -1),即-2^n+1为纯整数原码的最小值而这个数肯定是要大于[-2^n]的,因此[-2^n]无法用原码表示

综上可知,-1和-2^n的补码与[-0]原表示形式一样,且对于定点正数和定点小数补码都比原码多表示一位;

 

补码的表示范围:

一个n+1位定点整数补码的表示范围: -2^n ~ 2^n - 1   即 ( -2^n =< x <=2^n - 1)

一个n+1位定点小数补码的表示范围:-1 ~ 1-2^-n    即(-1 =< x <= 1-2^-n)

 

(3).补码和原码的关系

对于正数,即若x>=0 , [x]原=[x]补

若x<0,对[x]原 各位按位取反(符号位不变)后再在最低位加1得到[x]补;反之将[x]补除符号位以外各位取反后,再在最低位加1,即得到[x]原

注意:补码中特殊数-1(纯小数)和-2^n(纯整数)的表示,在原码中没有对应表示 

 

(4).[x]补[-x]补的关系

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

 

(5)补码的移位规则

补码的左移(乘2):符号位不变,数值部分左移,最低位移出的空位填充0;

补码的右移(除2):符号位不变,数值部分右移,最高位移出的空位填充符号位

 

(6)补码的位扩展

例如将字节(8位二进制)表示的补码扩展为16位二进制表示的补码。

扩展的要求:数值本身不发生改变

定点小数:在最低位用0扩展

定点整数:在高位用符号位扩展

 

注意:在一般在试题中出现加法运算(z=x+y)则是对补码进行操作运算,所以需要将各个数(x,y,z)转换为补码

 

反码表示

反码的主要作用就是求补码。原码各位取反即为反码,反码末位加1既得补码

(1).反码的表示范围和原码相同。注意纯小数的反码不能表示为-1,纯整数的反码不能表示为-2^n

(2).在反码表示中,用符号位x0表示正负,形式与原码表示相同,0为正,1为负

 

移码表示

[x]移=(模的指数-1) + 真值[x],

即对于整数,模=2^(n+1) ,[x]移=2^(n+1-1) + x = 2^n + x

对于小数,模=2=2^1,[x]移=2^(1-1) + x = 2^0 + x

(1)移码的符号位:

0表示负数,1表示正数,和原码、反码、补码不同

(2)移码与真值的线性关系

移码的顺序和真值完全一致,因此移码在表示阶码时可以方便的进行大小比较,其结果与真值一致

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值