Chinaunix首页 | 论坛 | 博客
  • 博客访问: 144232
  • 博文数量: 21
  • 博客积分: 709
  • 博客等级: 上士
  • 技术积分: 255
  • 用 户 组: 普通用户
  • 注册时间: 2005-04-19 22:23
个人简介

凤飞飞

文章分类

全部博文(21)

文章存档

2012年(3)

2011年(17)

2005年(1)

我的朋友

分类: 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

阅读(2608) | 评论(0) | 转发(0) |
0

上一篇:mysql优化

下一篇:PHPExcel读取excel文件

给主人留下些什么吧!~~