。。。编程遇到数学小问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 12:32:13
10进制化为2进制 的方法是:

逐次除以2,倒着排余数。

怎么想也不明白其中的道理啊。。

请高手详细指点。。。谢谢

数学公式:
十进制数A用二进制表示为An.....A2 A1 A0,其中An=0,1; n=0,1,2,3,4.....
如4表示为100,那么

A0*2^0 + A1*2^1 + A2*2^2 ....+An*2^n= A
因为An不是零就是1,那个每次对等式除2,就得到一个可以被2整除的数 + 1(或者+0).

左边不断的除2取余后,就得到了
A0 A1 A2...An的序列,把它反过来写成An...A2 A1 A0就是他的2进制序列了。
除的目的就是消去2^n,得到An,其中n=0,1,2,3....

上面的An*2^n表示An乘2的n次方.

你用十进制来想一下,如123456,对他除10取余.
第一次结果为12345,余为6。
第二次结果为1234,余为5.
依次推下去,等到6,5,4,3,2,1的序列,反过来写就是答案了。

这个我明白,但是用语言很难表达.
可以这么想, 10转为1010
1步::10除以2, 分成两部份, 那么 得出5, 余数0, 则伪二进制码为:
50.这就是第一个余数0, 而5代表 5*2^1 = 10
10(5) + 0(0) = 10

2步::5除以2, 分成两部分, 那么 得出2, 余数1, 则伪二进制码为:
210.这就是第二个余数1, 而2代表 2*2^2 = 8
8(2) + 2(10) = 10

3步::2除以2, 分成两部分, 那么 得出1, 余数0, 则得出:
1010.这就是第三个余数0, 1代表 1*2^4 = 8, 而0代表 0*2^3 = 0
8(1) + 0(0) + 2(1) + 0(0) = 10

4步::最后1/2, 得出0, 余数1, 于是得出结果 01010

明白吗?
以下是十进制与八进制转换:
100除以8, 分成两部份, 那么 得出12, 余数4, 则伪八进制码为:(12)4
12除以8, 分成两部分, 那么