一个小于等于31的数 用公式怎么算出是这5个数1,2,4,8,16任意相加的结果

问题描述:

一个小于等于31的数 用公式怎么算出是这5个数1,2,4,8,16任意相加的结果
每个数只能用一次 例如 14=8+4+2;而不是14=8+2+2+2
1个回答 分类:数学 2014-10-01

问题解答:

我来补答
用二进制来解释吧
1= 1(2进制)
2= 10(2进制)
4= 100(2进制)
8= 1000(2进制)
16= 10000(2进制)
31=11111(2进制)=10000+1000+100+10+1(2进制)
则31=16+8+4+2+1
30=11110(2进制) =10000+1000+100+10(2进制)
则=16+8+4+2
19=10011 =10000+10+1(2进制)
则=16+2+1
其余以此类推
总结起来就是
整数除以2,然后再用商除以2,直到商等于0为止,以每次的余数(1或0)进行计算 ,第一次余数乘以1,第二次的余数乘以2,第三次的余数乘以4.第y次余数乘以2^(y-1),所有余数相加则得原整数.
以30为例:
30/2=15 余0 第1次计算,0(余数)×2^(1-1)=0
15/2=7 余1 第2次计算,1(余数)×2^(2-1)=2
7/2=3 余1 第3次计算,1(余数)×2^(3-1)=4
3/2=1 余1 第4次计算,1(余数)×2^(4-1)=8
1/2=0 余1 第5次计算,1(余数)×2^(5-1)=16
则30=2+4+8+16
以27为例:
27/2=13 余1 第1次计算,1(余数)×2^(1-1)=1
13/2=6 余1 第2次计算,1(余数)×2^(2-1)=2
6/2=3 余0 第3次计算,0(余数)×2^(3-1)=0
3/2=1 余1 第4次计算,1(余数)×2^(4-1)=8
1/2=0 余1 第5次计算,1(余数)×2^(5-1)=16
则27=1+2+8+16
再问: 在java程序中采用递归应该怎么写啊?
再答: 编程语言我一门都没学会~~~~~  - -!

我用一个简单的excel表格表示一下吧

 
 
展开全文阅读
剩余:2000
下一页:fx的解析式