Chinaunix首页 | 论坛 | 博客
  • 博客访问: 31302
  • 博文数量: 6
  • 博客积分: 167
  • 博客等级: 入伍新兵
  • 技术积分: 89
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-28 20:14
文章分类

全部博文(6)

文章存档

2011年(6)

我的朋友
最近访客

分类: C/C++

2011-11-01 21:36:29

在补码编码中
[0]=(0000)
[1]=(0001)
[2]=(0010)
[3]=(0011)
[4]=(0100)
[5]=(0101)
[6]=(0110)
[7]=(0111)
[-1]=(1111)
[-2]=(1110)
[-3]=(1101)
[-4]=(1100)
[-5]=(1011)
[-6]=(1010)
[-7]=(1001)
[-8]=(1000)

为什么不编码成
<0>=(0000)
<-1>=(0001)
<-2>=(0010)
<-3>=(0011)
<-4>=(0100)
<-5>=(0101)
<-6>=(0110)
<-7>=(0111)
+<-x>=<0>定义呢?

新的编码方式
非负整数编码成(0000)~(0111)
正整数编码+<-x>=<0>定义

减法可以转换成加法
-=-+<0>=+(<0>-)=+<-y>

对任何整数x与y有+=
(i)如果x<0,y<0,+=
(ii)如果x>0,y<0,x+y<0,+=+<(x+y)+(-x)>=++<-x>=(i)
(iii)如果x>0,y<0,x+y>0,+=+<(x+y)+(-x)>=++<-x>=(ii)
(iiii)如果x>0,y>0,+=+<(x+y)+(-x)>=++<-x>=(iii)

也可以
+=[-x]+[-y]=[-(x+y)]=
[x]+[y]=<-x>+<-y>=<-(x+y)>=[x+y]
阅读(1829) | 评论(0) | 转发(0) |
0

上一篇:并集查找算法

下一篇:没有了

给主人留下些什么吧!~~