[转帖] 进制的换算方式

[复制链接]
Format Format 发表于 2006-6-4 22:33:10
4157 1

刚有哥们问我进制的换算,教也不明白。自己写了一下换算的方式,中间那段简单方法的示例是找来的,然后粘贴的,我也不会讲,只能抄了!不过前面的简略算法安全展开的含义和后面的进制表可是偶的力作!!!!唉。看那个安全展开的说明就知道偶的口才。。。。。。。。[em06][em06][em06][em06]

 

 


十六进制换算十进制 安全展开 按十六进制格式位数乘以16的X位次方
十六进制换算二进制   除法   除以二得余数倒过来念
十六进制换算八进制   未知   我也不会算

八进制换算二进制     除法   除以二得余数倒过来念
八进制换算十进制   安全展开 按八进制格式位数乘以8的X位次方 
八进制换算十六进制   未知   我也不会算

十进制换算二进制     除法   除以二得余数倒过来念
十进制换算八进制     除法   除以八得余数倒过来念
十进制换算十六进制   除法   除以十六得余数倒过来念


二进制换算十进制    安全展开 按二进制格式位数乘以二的X位次方
二进制换算八进制     从右到左,三位一组,不够补0 ,3个数分别对应4 2 1的进行乘法然后象加
二进制换算十六进制   从右到左,四位一组,不够补0 ,4个数分别对应8 4 2 1的进行乘法然后象加


安全展开的含义:

比如 二进制 “1101100”
从右起"0"到左尾部"1"止  倒过来排位:
1101100   ←二进制数
6543210   ←排位方法

例如二进制换算十进制的算法:

 1  *  26 + 1 * 25 + 0 * 24 + 1 * 23 + 1 * 22 + 0 * 21 + 0 * 20

 ↑    ↑
进制   后面的数是
       次方,也就
       是2的6次方

2的6次方等于2*2=4*2=8*2=16*2=32*2=64.....
等于:

64+32+0+8+4+0+0
=108     

 


二进制换算八进制十六进制最简单的方法:
 
如二进制的“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

 

二进制数转换为十进制数
二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……
所以,设有一个二进制数:0110 0100,转换为10进制为:
下面是竖式:
 
0110 0100 换算成 十进制
 
第0位 0 * 20 = 0
第1位 0 * 21 = 0
第2位 1 * 22 = 4
第3位 0 * 23 = 0
第4位 0 * 24 = 0
第5位 1 * 25 = 32
第6位 1 * 26 = 64
第7位 0 * 27 = 0 +
---------------------------
100
 
用横式计算为:
0 * 20 + 0 * 21 + 1 * 22 + 1 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 100
 
0乘以多少都是0,所以我们也可以直接跳过值为0的位:
1 * 22 + 1 * 23 + 1 * 25 + 1 * 26 = 100
 

 


八进制数转换为十进制数
八进制就是逢8进1。
八进制数采用 0~7这八数来表达一个数。
八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方……
所以,设有一个八进制数:1507,转换为十进制为:
用竖式表示:
 
1507换算成十进制。
 
第0位 7 * 80 = 7
第1位 0 * 81 = 0
第2位 5 * 82 = 320
第3位 1 * 83 = 512 +
--------------------------
839
同样,我们也可以用横式直接计算:
7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839
 
结果是,八进制数 1507 转换成十进制数为 839

 

十六进制数转换成十进制数
2进制,用两个阿拉伯数字:0、1;
8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;
10进制,用十个阿拉伯数字:0到9;
16进制,用十六个阿拉伯数字……等等,阿拉伯人或说是印度人,只发明了10个数字啊?
 
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换算成10进制:
 
第0位: 5 * 160 = 5
第1位: F * 161 = 240
第2位: A * 162 = 2560
第3位: 2 * 163 = 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

 

 

 

 

 

进制表

10     8     16    2
0      0      0    0
1      1      1    1
2      2      2    10
3      3      3    11
4      4      4    100
5      5      5    101
6      6      6    110
7      7      7    111
8      10     8    1000
9      11     9    1001
10     12     A    1010
11     13     B    1011
12     14     C    1100
13     15     D    1101
14     16     E    1110
15     17     F    1111
16     20     10   10000
17     21     11   10001
18     22     12   10010
19     23     13   10011
20     24     14   10100
21     25     15   10101
22     26     16   10110
23     27     17   10111
24     30     18   11000
25     31     19   11001
26     32     1A   11010
27     33     1B   11011
28     34     1C   11100
29     35     1D   11101
30     36     1E   11110
31     37     1F   11111
32     40     20   100000
.
.
.
.
47     57     2F   101111
48     60     30   110000
.
.
.
.
.等等!        

燃烧百合园,做我们共有的网络家园!
bbhu bbhu 发表于 2006-6-15 16:07:13

不错

燃烧百合园,做我们共有的网络家园!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

推荐阅读

本站简介

燃烧百合园最初版本上线于2003年,于2004年11月注册正式域名www.firelilys.net。建设本站的目的纯粹是为了个人爱好,后来认识的朋友越来越多,站点的资料就越来越丰富。遗憾的是2009年左右,因为无良空间商导致网站数据全部丢失,所以本站一直处于断断续续开关的状态。本次改版于2019年6月19日,源于和以前的网友一次聊天,仅恢复了极少部分历史数据。(如果我们有侵犯了您权益的资源请联系我们删除)

Archiver|手机版|小黑屋|旧博客存档|燃烧百合园. ( 鄂ICP备05005255号 )

Powered by 燃烧百合园 X3.5  © 2002-2019 燃烧百合园   

返回顶部 返回列表