日期:2014-05-19  浏览次数:20624 次

跪求高手帮忙解答, 关于十进制与二进制转换的数学原理问题
RT, 我知道怎么转换, 就是想知道为什么要这样转, 其中的数学原理是什么?
例如: 5的二进制转换方法为 5除以2 得余数1 然后再用商值2继续除以2 得余数0 然后除尽了商值为1 所以 最后得到二进制值为 100
      100的十进制转换方法为 (1 x 2^2) + (0 x 2^1) + (0 x 2^0) = 4 + 0 + 1 = 5
为什么要这样转换呢, 是怎样的数学原理?      

还有 java byte的取值范围为 -2^7 ~ 2^7-1     int 的取值范围为 -2^31 ~ 2^31-1
比如-128 ~ 127, 127的二进制表示为 0 111 1111, 根据它是如何推到出2^7-1的呢?              

唉!~  我是新手, 数学还不好, 只知道方法和结果, 根本不理解原理, 请高手帮忙解答一下, 谢谢了.

------解决方案--------------------
首先要想清楚什么是 10进制

逢10进1 这就是 10进制

2进制逢2进1  

也就是说 对于10进制,每个位上最多只能有10个不同的数字

而2进制 每个位上最多只能有两个不同的数字



所以 我们常用的10进制 ,
对于一个数字 比如 321
那么就是 3* 10 ^2 + 2 * 10^1 + 1* 10 ^0  = 321

这个公式里面的 10 就是 10进制的单位。

所以  对于  2进制100 也就是  1* 2^2 + 0 * 2^2 + 0 * 2^0 = 5D

看看多项式的展开把 高等数学里面这一块应该有比较深入的讲解了。

对于计算机中的位

可以这样理解  每个电容可以有两种状态 有电 和 没有电
 那么用0 表示没有电 用1表示有电 这样的话刚好就是一个2进制了

所以电脑中用2进制来表示数据。


------解决方案--------------------
所谓几进制就是,数到几进位的意思。因为人们惯性思维是按照10进制来的,所以楼主就迷糊了。


现在不管几进制,就来数数吧,比如楼主想数100个数

不管表现形式如何,一定数了100次是真的吧。


按照记事儿就接触的数法(10进制)

那数法就是,1,2,3,4。。。9,10,11。。。20,21。。。99,100
这么数吧,为什么你数到10的时候变成10了?原因是因为你是按10进制数的
个位到是了就十位就要+1

那么,同样数100个数,如果按照楼主不太熟悉的2进制会怎样呢?2进制顾名思义,到2就要进一位,按照10进制的数法,2进制的数法自然就变成了
1,10,11,100,101……1100100

那么如果是3进制呢,虽然没有应用但道理相同?
1,2,10,11,12,20……10201

以此类推

这么数完了,在回头看看100这个标记,注意在没有规定100是几进制的时候它只是一个标记,那楼主来想想我数到100这个标记的时候我一共数了多少次。所以这时候的情况就变得很多了

10进制,自然是数了100次了,因为数十次进1,所以  (1 x 10^2) + (0 x 10^1) + (0 x 10^0) = 100

那2进制呢,数到100数了几个数呢?因为数两个数就进了1所以,  (1 x 2^2) + (0 x 2^1) + (0 x 2^0) =4

那3进制就是,所以  (1 x 3^2) + (0 x 3^1) + (0 x 3^0) = 9

那么同样的道理,你数4个数你把它用二进制标记表示出来,就是上面球数数次数的反运算。

理解到这儿,楼主估计不难理解10进制转换2进制了吧,因为10进制的标记和你数的次数是一致的,而其它的进制标记和你数的次数是不一样的你才迷糊的。

后面的就更好理解了,二进制,0 111 1111 + 1 = 1000000 = 2^7
那自然0 111 1111  = 2^7 -1