---------------------- android培训、java培训、期待与您交流! ----------------------
十进制转二进制:
用2辗转相除至结果为1
将余数和最后的1从下向上倒序写 就是结果
例如302
302/2 = 151 余0
151/2 = 75 余1
75/2 = 37 余1
37/2 = 18 余1
18/2 = 9 余0
9/2 = 4 余1
4/2 = 2 余0
2/2 = 1 余0
1/2 = 0 余1
故二进制为100101110
二进制转十进制
从最后一位开始算,依次列为第0、1、2...位
第n位的数(0或1)乘以2的n次方
得到的结果相加就是答案
例如:01101011.转十进制:
第0位:1乘2的0次方=1
1乘2的1次方=2
0乘2的2次方=0
1乘2的3次方=8
0乘2的4次方=0
1乘2的5次方=32
1乘2的6次方=64
0乘2的7次方=0
然后:1+2+0
+8+0+32+64+0=107.
二进制01101011=十进制107.
负数二进制变成十进制要取反加1.
也就是说要求负数,就是 用对应正数,取反+1
4 0000 0100 取反 1111 1011 +1后 1111 1100
3 0000 0011 取反 1111 1100 +1后 1111 1101
这种方法叫求补运算。负数转正数,也是进行取反+1 的求补运算
负数二进制转十进制, 是对这个负数二进制进行求补运算,得到对应的正数,前面加个负号就得到对应的十进制了
二进制换算八进制
例:二进制的“10110111011” 换八进制时,从右到左,三位一组,不够补0,即成了: 010 110 111 011 然后每组中的3个数分别对应4、2、1的状态,然后将为状态为1的相加,如: 010 = 2 110 = 4+2 = 6 111 = 4+2+1 = 7 011 = 2+1 = 3 结果为:2673
二进制转换十六进制也类似,只要每组4位,分别对应8、4、2、1就行了,如分解为: 0101 1011 1011 运算为: 0101 = 4+1 = 5 1011 = 8+2+1 = 11(由于10为A,所以11即B) 1011 = 8+2+1 = 11(由于10为A,所以11即B) 结果为:5BB
假设十进制数为1000,则八进制数位1750,过程如下:
1000/8=125,余数为0;
125/8=15,余数为5;
15/8=1,余数为7;
1/8=0,余数为1;
你从下往上看这些余数,顺序写出,就是答案1750,要注意的是最后一定要除到0为止,也就是最后一步1/8=0,一定要除到0.
再示范一个数,比如十进制的534,八进制为1026,过程为:
534/8=66,余数为6;
66/8=8,余数为2;
8/8=1,余数为0;
1/8=0,余数为1;
仍然是从下往上看这些余数,顺序写出,答案为1026
归纳一下,大进制数转小进制数都可以用这个方法,比如十六进制转10进制,如果你不知道答案,可以用windows自带的计算器来验证,要用科学型的(在计算器——查看——科学型)
如果是八进制转十进制的,可以用下述方法:
还是上面的例子1026八进制转十进制
1*8^3+0*8^2+2*8^1+6*8^0=534 (8^3指的是8的立方)
上式各项的意义:1*8^3中的1是1026的千位;八进制时,第二个数为8;3是指4-1,这个4是指1026是4位数。
0*8^2意义同上。0是1026的百位;八进制时,第二个数为8;2是指4-2(8后面的指数是递减的形式)。
一直写到8^0一项即可。
所以求AnAn-1……A1八进制的n位数转十进制时(比如八进制的1026,对应的A4=1,A3=0,A2=2,A1=6),总结出公式为:
An*8^n+An-1*8^(n-1)+An-2*8^(n-2)+……+A1*8^0=对应的十进制数
所以小进制数转大进制数都可以用这个方法。
---------------------- android培训、java培训、期待与您交流! ----------------------