读书人

有哪位高手能够证明“除2取余”可以实

发布时间: 2012-03-11 18:15:39 作者: rapoo

有谁能够证明“除2取余”可以实现其他进制转换为2进制!
我常不停的问自己,这个结果是依靠什么推理出来的,还望有人能够道破玄机。

[解决办法]
其实任何进制的转换都是 除x取余,任何数(整数)用不同进制表示的通式是
a0X^0+a1X^1+a2X^2......+anX^n
你依次除X取余就是对应的a(i-1)(i=1,2,3,...,n)
而商就是下一步的被除数,由此递推到新的被除数 <X
[解决办法]
举个例子:
(1).一个十进制的例子:586,586除以10余6商58,58除以10余8商5,5除以10余5商0
(2).在举个二进制的例子:11010,
11010除以2余0商1101
1101除以2余1商110
110除以2余0商11
11除以2余1商1
1除以2余1商0
把上面所有的余数合起来恰好就是原来的数:11010
所以这种方法 实际上是一种很自然的方法

[解决办法]


证明

1) 假设任意一个数 a ,存在一个数b ,使得
a=b*2+k*1 (其中k=0或1)

2) 根据1) , 使用数学归纳法可以得知:
对任意一个数a ,存在一个数组 k[n] (对0 <i <n,k[i]=0或1)
使得
a=k[i]*2[i]+ ...+ k[0]*2[0]
其中 2[i]表示2的i次方。
3)
那么把第i次对a除2求余得到 k[i]

4) 注意到k[n]..k[i]..k[0]就是a的二进制表示

读书人网 >软件架构设计

热点推荐