标题：进制
概念
进位制/位置计数法是一种记数方式，故亦称进位记数法/位值计数法，可以用有限的数字符号代表所有的数值。可使用数字符号的数目称为基数(en:radix)或底数，基数为n，即可称n进位制，简称n进制。现在最常用的是十进制，通常使用10个阿拉伯数字0-9进行记数。  
对于任何一个数，我们可以用不同的进位制来表示。比如：十进数57(10)，可以用二进制表示为111001(2)，也可以用五进制表示为212(5)，也可以用八进制表示为71(8)、用十六进制表示为39(16)，它们所代表的数值都是一样的。
数制也称计数制，是指用一组固定的符号和统一的规则来表示数值的方法。计算机是信息处理的工具，任何信息必须转换成二进制形式数据后才能由计算机进行处理，存储和传输。
十进制数
人们通常使用的是十进制。它的特点有两个：有0，1，2….9十个基本数字组成，十进制数运算是按“逢十进一”的规则进行的. 
在计算机中，除了十进制数外，经常使用的数制还有二进制数和十六进制数.在运算中它们分别遵循的是逢二进一和逢十六进一的法则.
二进制数
二进制数有两个特点：它由两个基本数字0，1组成，二进制数运算规律是逢二进一。
为区别于其它进制数，二进制数的书写通常在数的右下方注上基数2，或加后面加B表示。
例如：二进制数10110011可以写成（10110011）2，或写成10110011B，对于十进制数可以不加注.计算机中的数据均采用二进制数表示，这是因为二进制数具有以下特点：
1） 二进制数中只有两个字符0和1，表示具有两个不同稳定状态的元器件。例如，电路中有，无电流，有电流用1表示，无电流用0表示。类似的还比如电路中电压的高，低，晶体管的导通和截止等。
2） 二进制数运算简单，大大简化了计算中运算部件的结构。
二进制数的加法和乘法运算如下：
0+0=0 0+1=1+0=1 1+1=10 
0×0=0 0×1=0 1×0=0 1×1=1
四进制
四进制是以4为底数的进位制，以 0、1、2 和 3 四个数字表示任何实数。 　四进制与所有固定底数的记数系统有着很多共同的属性，比如以标准的形式表示任何实数的能力（近乎独特），以及表示有理数与无理数的特性。有关属性的讨论可参考十进制和二进制，下面是十进制0至15与四进制与二进制的互换。 
Qua 
（四进）
Bin 
（二进）
Dec 
（十进）
0
0000
0
1
0001
1
2
0010
2
3
0011
3
10
0100
4
11
0101
5
12
0110
6
13
0111
7
20
1000
8
21
1001
9
22
1010
10
23
1011
11
30
1100
12
31
1101
13
32
1110
14
33
1111
15

七进制数
七进制是以7为底数的记数系统。使用数字0-6。
七进制小数通常都是循环小数，除非分母是七的倍数。有些小数可以用有限个数字来表示，如：
十进制
七进制 （循环部分）
1/2
1/2 = 0.3...
1/3
1/3 = 0.2...
1/4
1/4 = 0.15...
1/5
1/5 = 0.1254...
1/6
1/6 = 0.1...
1/7
1/10 = 0.1
1/8
1/11 = 0.06...
1/9
1/12 = 0.053...
1/10
1/13 = 0.0462...
1/12
1/15 = 0.04...
1/14
1/20 = 0.03...
1/15
1/21 = 0.0316...
1/16
1/22 = 0.03...
1/18
1/24 = 0.025...
1/19
1/25 = 0.024...
1/20
1/26 = 0.0231...
1/21
1/30 = 0.02...
1/24
1/33 = 0.02...
...
...
1/49
1/100 = 0.01
七进制的乘法表：
-
1
2
3
4
5
6
10
1
1
2
3
4
5
6
10
2
2
4
6
11
13
15
20
3
3
6
12
15
21
24
30
4
4
11
15
22
26
33
40
5
5
13
21
26
34
42
50
6
6
15
24
33
42
51
60
10
10
20
30
40
50
60
100
在七进制中：π = 3.0663651432... e = 2.5012410654...
加法运算举例：1、131+245=4062、406+666=14053、1405+3456=4534数制转换举例：1、十进制的131转化成七进制数131（十)=18*7+5=（2*7+4）*7+5=2*7^2+4*7^1+5=245（七）2、七进制数245转化成十进制数245（七）=2*7^2+4*7^1+5=2*49+4*7+5=98+28+5=131（十） 
七进制的一个好处是，3.1 (22/7）是圆周率的一个很好的近似值。
————————————————————————
Function Cvn10to7(num As Long) As LongDim rst As VariantDo While Int(num / 7) <> 0 rst = (num Mod 7) & rst num = (num - (num Mod 7)) / 7LoopCvn10to7 = num & rstEnd Function
八进制数
由于二进制数据的基R较小，所以二进制数据的书写和阅读不方便，为此，在小型机中引入了八进制。八进制的基R=8=2^3，有数码0、1、2、3、4、5、6、7，并且每个数码正好对应三位二进制数，所以八进制能很好地反映二进制。八进制用下标8或数据后面加O表示 例如：二进制数据 （ 11 101 010 . 010 110 100 ）2 对应 八进制数据 ( 3 5 2 . 2 6 4 )8或352.264O.
十二进制
十二进制　长度单位一英尺等于12英寸，一先令等于12便士，就连足球比赛罚点球的英制长度也是12码。
十二进制来源：传说是十个手指头加两只脚。这是过去规定的，现在规定一打dozen为12个。
规定一打12个是一种12进制。
瑞典历史上有一位有远见的国王就说过，从日常应用的角度看，十二进制比十进制更方便。他生前曾设想过，在他管辖的范围内取消十进制，而代之以十二进制。
现在还能见到十二进制，比如钟表转一圈12小时等等。
十进制
1
2
3
4
5
6
7
8
9
10
11
十二进制
1
2
3
4
5
6
7
8
9
M
N
有时十进制中的10/11在十二进制中也用A/B表示。
十六进制
由于二进制数在使用中位数太长，不容易记忆，所以又提出了十六进制数
十六进制数有两个基本特点：它由十六个字符0～9以及A，B，C，D，E，F组成（它们分别表示十进制数10～15），十六进制数运算规律是逢十六进一，即基R=16=2^4，通常在表示时用尾部标志H或下标16以示区别。
例如：十六进制数4AC8可写成（4AC8）16，或写成4AC8H。
六十进制
古代人由于生产劳动的需要，要研究天文和历法，就牵涉到时间和角度了。因为历法需要的精确度较高，时间的单位小时，角度的单位度都嫌太大。必须进一步研究他们的小数。它们的小数都具有这样的性质︰使1/2,1/3,1/4,1/5,1/6等都能成为他的整数倍。以1/60作为单位，就正好具有这个性质。譬如︰1/2等于30个1/60,1/3等于20个1/60,1/4等于15个1/60…这种小数的进位制在表示有些数时很方便。例如常遇到的1/3，在十进位制中要变成无限小数，但在这种进位制中就是一个整数。
位权概念
对于形式化的进制表示，我们可以从0开始，对数字的各个数位进行编号，即个位起往左依次为编号0，1，2，……；对称的，从小数点后的数位则是-1，-2，……
进行进制转换时，我们不妨设源进制（转换前所用进制）的基为R1，目标进制（转换后所用进制）的基为R2，原数值的表示按数位为AnA(n-1）……A2A1A0.A-1A-2……，R1在R2中的表示为R，则有（AnA(n-1）……A2A1A0.A-1A-2……）R1=(An*R^n+A(n-1)*R^(n-1)+……+A2*R^2+A1*R^1+A0*R^0+A-1*R^(-1)+A-2*R^(-2))R2
（由于此处不可选择字体，说明如下：An，A2，A-1等符号中，n，2，-1等均应改为下标，而上标的幂次均用^作为前缀）
举例：
一个十进制数110，其中百位上的1表示1个10^2，既100，十位的1表示1个10^1，即10，个位的0表示0个100，即0。
一个二进制数110，其中高位的1表示1个2^2，即4，低位的1表示1个2^1，即2，最低位的0表示0个2^0，即0。
一个十六进制数110，其中高位的1表示1个16^2，即256，低位的1表示1个16^1，即16，最低位的0表示0个16^0，即0。
可见，在数制中，各位数字所表示值的大小不仅与该数字本身的大小有关，还与该数字所在的位置有关，我们称这关系为数的位权。
十进制数的位权是以10为底的幂，二进制数的位权是以2为底的幂，十六进制数的位权是以16为底的幂。数位由高向低，以降幂的方式排列。
进数转换
1.二进制数、十六进制数转换为十进制数（按权求和） 
二进制数、十六进制数转换为十进制数的规律是相同的。把二进制数（或十六进制数）按位权形式展开多项式和的形式，求其最后的和，就是其对应的十进制数——简称“按权求和”. 
例如：把（1001.01)2 二进制计算。
解：（1001.01）2 
=8*1+4*0+2*0+1*1+0*(1/2)+1*(1/4)
=8+0+0+1+0+0.25
=9.25
把（38A.11)16转换为十进制数 
解：（38A.11)16 
=3×16的2次方+8×16的1次方+10×16的0次方+1×16的-1次方+1×16的-2次方 
=768+128+10+0.0625+0.0039
=906.0664
2.十进制数转换为二进制数，十六进制数（除2/16取余法） 
整数转换.一个十进制整数转换为二进制整数通常采用除二取余法，即用2连续除十进制数，直到商为0，逆序排列余数即可得到――简称除二取余法． 
例：将25转换为二进制数 
解：25÷2=12 余数1 
12÷2=6 余数0 
6÷2=3 余数0 
3÷2=1 余数1 
1÷2=0 余数1 
所以25=(11001)2 
同理，把十进制数转换为十六进制数时，将基数2转换成16就可以了. 
例：将25转换为十六进制数 
解：25÷16=1 余数9 
1÷16=0 余数1 
所以25=(19)16 
3.二进制数与十六进制数之间的转换 
由于4位二进制数恰好有16个组合状态，即1位十六进制数与4位二进制数是一一对应的.所以，十六进制数与二进制数的转换是十分简单的. 
(1）十六进制数转换成二进制数，只要将每一位十六进制数用对应的4位二进制数替代即可――简称位分四位. 
例：将（4AF8B)16转换为二进制数. 
解： 4 A F 8 B 
0100 1010 1111 1000 1011 
所以（4AF8B)16=(1001010111110001011)2 
(2）二进制数转换为十六进制数，分别向左，向右每四位一组，依次写出每组4位二进制数所对应的十六进制数――简称四位合一位. 
例：将二进制数（000111010110)2转换为十六进制数. 
解： 0001 1101 0110 
1 D 6 
所以（111010110)2=（1D6）16 
转换时注意最后一组不足4位时必须加0补齐4位
数制转换的一般化
1）R进制转换成十进制
任意R进制数据按权展开、相加即可得十进制数据。例如：N = 1101.0101B = 1*2^3+1*2^2+0*2^1+1*2^0+0*2^-1+1*2^-2+0*2^-3+1*2^-4 = 8+4+0+1+0+0.25+0+0.0625 = 13.3125 
N = 5A.8H = 5*16^1+A*16^0+8*16^-1 = 80+10+0.5 = 90.5
2）十进制转换R 进制
十进制数转换成R 进制数，须将整数部分和小数部分分别转换. 
1.整数转换——---除R 取余法 规则：（1）用R 去除给出的十进制数的整数部分，取其余数作为转换后的R 进制数据的整数部分最低位数字； （2）再用R去除所得的商，取其余数作为转换后的R 进制数据的高一位数字； （3）重复执行（2）操作，一直到商为0结束。例如：115 转换成 Binary数据和Hexadecimal数据 （图2-4） 所以 115 = 1110011 B = 73 H
2．小数转换————---乘R 取整法 规则：（1）用R 去乘给出的十进制数的小数部分，取乘积的整数部分作为转换后R 进制小数点后第一位数字； （2）再用R 去乘上一步乘积的小数部分，然后取新乘积的整数部分作为转换后R 进制小数的低一位数字； （3）重复（2）操作，一直到乘积为0，或已得到要求精度数位为止。
and、or、xor运算
所有进制的and（和）、or（或）、xor（异或）运算都要转化为二进制进行运算，然后对齐位数，进行运算，具体的运算方法和普通的and、or、xor相同，如：1and1=1，1and0=0，0and0=0，1or1=1，1or0=1，0or0=0，1xor1=0，1xor0=1，0xor0=0。就是一般的二进制运算。
如：35（H）and5（O）=110101（B）and101（B）=101（B）=5（O）