进位计数制的基本概念
将数字符号按顺序排列成数位,并遵照某种由低到高的进位方式计数表示数值的方法,称作为计数制。
十进制
十进制计数制由 0、1、2、3、4、5、6、7、8、9 共 10 个数字符号组成。相同数字符号在不同的位数上表示不同的数值,每个数位计满十就向高位进一,即“逢十进一”。
八进制
八进制计数制由 0、1、2、3、4、5、6、7 共 8 个数字符号组成。相同数字符号在不同的数位上表示不同的数值,每个数位计满八位就像高位进一,即“逢八进一”。
二进制
二进制计数制由 0 和 1 共两个数字符号组成。相同数字符号在不同的数位上表示不同的数值,每个数位计满二就向高位进一,即“逢二进一”。
其他进制
在日常生活和工作中还会使用其他进制数。如:十二进制数、十六进制数、百进制数和千进制数等。无论哪种进制数,表示的方法都是类似的。如:十六进制数由 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E 和 F 共 16 个符号组成,“逢十六进一”。不同的是,用 A、B、C、D、E 和 F 分别表示 10、11、12、13、14 和 15 六个数字符号。
基数与权
某进制计数制允许选用的基本数字符号的个数称为计数。一般而言,J 进制数的计数为 J,可供选用的基本数字符号有 J 个,分别是 0 到 J-1,每个数位计满 J 就向高位进一,即“逢 J 进一”。
某进制计数制中各位数字符号所表示的数值表示该数字符号值乘以一个与数字符号所处位置有关的常数,该常数称为“位权”(简称“权”)。位权的大小是以计数为底、数字符号所处的位置的序号为指数的整数次幂。
十进制数允许使用是个基本数字符号,所以基数为 10,每位数字符号代表的位数的大小是以 10 为敌,数字符号所处位置的序号为指数的整数次幂。
十进制的百位、十位、个位和十分位的权分别为 102,101,100,10-1。故(555.5)10 可表示成(555.5)10=5102+5*101+5100+5*10-1。J 禁止数相邻两位数相差 J 倍,若小数点向左移 n 位,则整个数值就缩小 J^n。繁殖,小数点向右移 n 位,数值就放大 J^n。
数制之间的转换
计算机内部使用的数字符号只有“0”和“1”两个。也就是说,计算机内部使用的是二进制数,所有的数值数据和非数值数据,都是由“0”和“1”这两个数字符号加以组合而成的,我们称之为“二进制代码”。
计算机只用二进制的两个数码“0”和“1”来实现算数和逻辑运算,而人们仍然用十进制的形式向计算机中输入原始数据,并让计算机也用十进制形式显示和打印运算结果。所以,必须有一种自动转换方法,即让数据输入计算机后,将十进制转换成对应的二进制数,并在处理完毕后,再自动将二进制结果转换位十进制数。
为了表达方便起见,常在数字后加一缩写字母后缀作为不同禁止的标识。各种禁止数的后缀字母分别为:
B:二进制数 O:八进制数
D:十进制数 H:十六进制数
对于十进制数,通常不加后缀,也即十进制数后的字母 D 可省略。
十进制转二进制
整数转二进制
整数转二进制是最常见的。核心在于除 2 取余,倒序排列,高位补零。

不断地将数字除以 2,将余数写一边,直到商为 0 时停止。下方的为二进制的高位,由高位到低位倒序排列余数,高位不够用 0 来代替。
负整数转二进制
先是将对应的正整数转换成二进制后,对二进制取反然后再加 1。以-10 为例。10 的二进制表达是(00001010)B,由于高位都是 0,所以可以省略,写成(1010)B ,(用 B 来表示表达的是二进制)。
- 先取反。取反的意思就是 1 变成 0,0 变成 1。(00001010)B=>(11110101)B
- 加上 1。由于是二进制,所以我们逢二进一。(11110101)B =>(11110110)B。
由于小数的高位都是 1,所以我们也可以将高位省去,只保留(0110)B。不过注意和正整数进行区别。
小数转二进制
将小数部分乘以 2,取整数(这个整数不是 0 就是 1),当乘以二后小数部分结果为 0 或者位数够了,这些整数就是二进制。
以 0.125 为例
0.125 * 2 =0.25 整数部分为 0
0.25 * 2 = 0.5 整数部分为 0
0.5 * 2 = 1.0 整数部分为 1,小数部分为 0,停止。
二进制就为 0.001
如果是带整数部分的小数进行进制转换,那么分开来处理,先将整数部分,转换成二进制,再将小数部分,转为二进制。
注意小数进行二进制转换是存在无法除尽的情况的,这是正常的。根据题意保留足够的位数即可。
二进制转十进制
使用按权相加法。
高位为 0
首先第一步将位数补齐,如果高位是 0 则是一个正数。将其分离位数,将分离出来的位数按从低位到高位的顺序,依次和 2 的冥相乘累加。以(1010)B 为例。
分离位数:1 0 1 0 => 相乘累加 020+1*21+022+1*23=10
高位为 1
如果高位为 1,则说明是一个负数,那就先减 1,再进行取反,在进行转换。以(11110110)B 为例:
减一:(11110101)B => 取反: (00001010)B=>按权相加:020+1*21+022+1*23=10
小数形式
整数部分和小数部分分开计算。整数部分参考上面。小数部分则是相反。以(0.001)B 为例。
按权相加:02-1+0*2-2+12^-3=0.125
其他进制转换
整体上的方法和十进制与二进制的转换方法类似。转换成 x 进制的话使用除 x 取余,倒序排列,高位补零。二进制转换成其他进制还是采用按权相加的方法。
八进制与十六进制
八进制是逢八进一。
十进制转八进制的话,过程就是不断地将数字除以 8,将余数写一边,直到商为 0 时停止。下方的为二进制的高位,由高位到低位倒序排列余数,高位不够用 0 来代替。以十进制 10 转换为八进制例。

十六进制也是类似,需要注意的点是,十六进制的 10~15 是使用 A~F 来表示的。