跪求高手帮忙解答, 关于十进制与二进制转换的数学原理问题
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