凤飞飞
分类: C/C++
2011-07-22 11:37:13
十进制转二进制:
用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
故二进制为100101110
十进制转十六进制:
100以内一点的10转16心算比较快,复杂的用“计算器”算了。10转16用传统的计算方式可以了,就是大于15小
于256的10进制数除以16为的值为十位的16进制数,其余数为个位的16进制数,没余数则个位为0。如61的16进制是3D,61除以16得3余
13,3作十位数,13转成D为各位数。10进制数转换成16进制的方法,和转换为2进制的方法类似,惟一变化:除数由2变成16。同样是120,转换成
16进制则为:
被除数 计算过程 商 余数
120 120/16 7 8
7 7/16 0 7
120转换为16进制,结果为:78。
十进制转八进制:
10进制数转换成8进制的方法,和转换为2进制的方法类似,惟一变化:除数由2变成8。
来看一个例子,如何将十进制数120转换成八进制数.用表格表示:
被除数 计算过程 商 余数
120 120/8 15 0
15 15/8 1 7
1 1/8 0 1
120转换为8进制,结果为:170
二进制转十进制
从最后一位开始算,依次列为第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.
二进制转十六进制:
4个2进制位为一个16进制数,2进制1111为16进制F,
2进制中千位的1=8,百位的1=4,十位的1=2,个位的1=1,
将各个位的数作相应转换再相加,的到的数就是10进制数0-15,可轻松转换成16进制。
如01011100,可看成是两组2进制数0101和1100,则这个数就是16进制的5C。
二进制转为八进制:
可以 3 位二进制位编为一组(不够左侧补 0),然后从右边开始每三位按如下方式替换:
000 - 0, 001 - 1, 010 - 2, 011 - 3,
100 - 4, 101 - 5, 110 - 6, 111 - 7.
比如转换二进制数 1110101010100 那么分组为
001 110 101 010 100 按照转换方法对应转换
1 6 5 2 4
所以 1110101010100(2) = 16524(8)
十六进制转二进制:
以十六进制数3E为例:
将十六进制的每一位转换成四位二进制数,不足四位的在左面补0,组合起来即可得到二进制数。
3E的二进制数是00111110,既是111110
十六进制转十进制:
用相反的道理,将十位数乘以16加上个位数。
如5A,将5乘以16得80,加上A的10进制10,结果是90。 16进制就是逢16进1,
但我们只有0~9这十个数字,
所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。
字母不区分大小写。 十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。
假设有一个十六进数 2AF5, 那么如何换算成10进制呢?
用竖式计算十六进制2AF5换算成十进制:
第0位: 5 * 16的0次方 = 5
第1位: F * 16的1次方 = 240
第2位:A * 16的2次方 = 2560
第3位:2 * 16的3次方 = 8192
结果是10997
直接计算就是: 5 * 160 + F * 161 + A * 162 + 2 * 163 = 10997
(别忘了,在上面的计算中,A表示10,而F表示15)
现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。
假设有人问你,十进数 1234 为什么是 一千二百三十四?
你尽可以给他这么一个算式: 1234 = 1 * 103 + 2 * 102 + 3 * 101 + 4 * 100
八进制转十进制:
八进制就是逢8进1.八进制数采用 0~7这八数来表达一个数.
八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方…… 字串8 .
所以,
设有一个八进制数:1507,转换为十进制为:
用竖式表示八进制数1507换算成十进制:
第0位 7 * 8的0次方 = 7
第1位 0 * 8的1次方 = 0
第2位 5 * 8的2次方 = 320
第3位 1 * 8的3次方 =512
结果为839
同样,我们也可以用横式直接计算: 7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839,
八进制数 1507 转换成十进制数为 839
八进制转二进制:
就是二进制转八进制的方法反过来,二进制数每3个一组分别对应一个八进制数
000 - 0, 001 - 1, 010 - 2, 011 - 3,
100 - 4, 101 - 5, 110 - 6, 111 - 7.
例如:八进制数112三个数分别撤开换算成三个二进制数001 001 010
所以八进制数112换成二进制数就是1001010