数制系统
数制系统纯粹是一种数学理论。
数制是用一种固定的符号和统一的规则来表示数值的方法,就是一种计数的规则。常见的数值系统有二进制、八进制、十进制、十六进制等。其中计算机使用的是二进制数制系统,现实生活中常用的是十进制数制系统。其实有一点了解的可以看出它们都是使用一种进位的方式进行计数,例如二进制逢二进一,十进制逢十进一,这种方式称为进位制,也成为进位记数法,是一种计数方式,可以使用有限的数字符号表示所有的数值。
对于数制系统而言,常使用数码、基数、位权和因子等术语进行描述。
数码
数码是数制中表示基本数值大小的不同数字符号。例如十进制有十个数码,分别为0、1、2、3、4、5、6、7、8、9;二进制则有两个数码,分别是0和1。
基数
基数,也称底数,是数制中使用数码的个数。通常情况下使用基数来定义数制系统。例如十进制的基数为10,称为十进制数制系统,二进制的基数为2,称为二进制数制系统。
位权
位权是数码在不同位置上的倍率值,即数制中某一位上的1所表示的数值的大小(所处位置的价值)。例如:十进制中的123,1的位权为100,2的位权为10,3的位权为1;二进制中的10,1的位权为2,0的位权为1。对于一个n进制的数值,整数部分第i位(以小数点为原点向左)的位权为 n^(i-1)
,而小数部分为第j位(以小数点为原点向右)的位权为 n^(-j)
。
其实每一位数码所表示的数值大小等于该数码本身乘以位权。例如在十进制中可以使用个位、十位、百位、千位、万位…,十分位、百分位、千分位、万分位…来表示位权,个位就是 10^0
,十位就是 10^1
,…十分位就是 10^-1
。
因子
因子是一种倍数关系,如果整数n除以m,结果是无余数的整数,那么就称m是n的因子,n是m的倍数。只有当被除数、除数、商均为整数,余数为零才成立。
常见数制系统
二进制
二进制(Binary)是以 2 为基数,0、1为数码的进制系统,缩写为 B 或者 BIN 。二进制是由两个基本数字0和1组成,计算特点是“逢二进一”,“借一当二”。二进制数制系统常用于计算机等电子设备中数据的传输或存储,因为二进制中只有两个字符0和1,可以表示元器件的不同稳定状态;二进制的运算简单。
八进制
八进制(Octal)是以8为基数,0、1、2、3、4、5、6、7为数码的进制系统,缩写为O或者OCT。八进制的计算特点是“逢八进一”,“借一当八”。八进制数制系统常用于计算机的计算中,适用于12位、36位等或其它位数为3的倍数的计算机系统。
十进制
十进制(Decimal)是以10为基数,0、1、2、3、4、5、6、7、8、9为数码的数制系统。十进制的计算特点是“逢十进一”,“借一当十”。十进制是最常用的数制系统。
十六进制
十六进制(Hex)是以16为基数,0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F为数码的进制系统,缩写为H或者HEX。十六进制的计算特点是“逢十六进一”,“借一当十六”。十六进制数制系统常用于计算机高级编程语言中,常用于对大数据的表示。
进制转换
低进制转高进制
对于任意一个n进制的数值转换为m进制(m>n)的数值时可以使用按权求和法,即将n进制的数值按n进制位权展开后,按照m进制的加法规则进行求和,得到的结果就该n进制数值使用m进制表示的数值
比如二进制 100101101
转 十进制: 2^8 + 2^5 + 2^3 + 2^2 + 2^0 = 256 + 32 + 8 + 4 + 1 = 301
高进制转低进制
对于任意一个 n 进制的数值转换为 m 进制(m<n
)的数值时可以先将 n 进制的数值转换为十进制数值表示的形式,然后将十进制结果数值再转换为 m 进制数值。十进制的数值转换为任意 m 进制的数值时可以采用基数除乘法,需要将整数部分和小数部分分开转换,整数部分使用基数除法(即除m取余法),小数部分使用基础乘法(乘m取整法),然后将取得的结果按照规律合并起来。
基数除法(除m取余法)――类似于短除法,用 m 去除十进制整数部分,一直到商为零时结束,将每一步得到的余数按反方向排列,则得到整数部分的m进制表示形式。
基数乘法(乘m取整法)――即使用m去乘十进制小数部分,一直到乘积没有小数即小数部分为零(或者出现循环体或者得到要求的精度位置)时结束,将每一步得到的乘积的整数部分按正方向排列,则得到小数部分的m进制表示形式。