1.3.1 数制
1.数制的概念
将数字符号按序排列成数位,并遵照某种由低位到高位进位的方法进行计数表示数值的方式称作进位计数制,简称数制。它有3个基本术语:
①数符:用不同的数字符号表示一种数制的数值,这些数字符号称为“数符”。
②基数:数制所允许使用的数符个数称为“基数”。
③权值:某数制中每一位所对应的单位值称为“权值”,或称“位权值”,简称“权”。
在进位计数制中,使用数符的组合形成多位数,按基数来进位、借位,用权值来计数。一个多位数可以表示为
式中:i为某一位的位序号;Ai为i位上的一个数符,0≤Ai≤R-1,如十进制有0、1、2、……、8、9共10个数符;R为基数,将基数为R的数称为R进制数,如十进制的R为10;m为小数部分最低位序号;n为整数部分最高位序号(整数部分的实际位序号是从0开始,因此整数部分为n+1位)。
式(1-1)将一个数表示为多项式,又称数的多项式表示。例如,十进制数975,它可以根据式(1-1)表示为975=9×102+7×101+5×100,等式的左边为顺序计数,右边则为按式(1-1)的多项式表示。实际上把任何进制的数按式(1-1)展开求和就得到了它对应的十进制数,所以式(1-1)也是不同进制数之间相互转换的基础。
由此,可以将进位计数制的基本特点归纳为:
①一个R进制的数有R个数符。
②最小的数符为0,最大的数符为R-1。
③计数规则为“逢R进1,借1当R”。
2.常用数制
在日常生活中,十进制数是人们十分熟悉的计数制。它用0、1、2、3、4、5、6、7、8、9共10个数字符号,按照一定规律排列起来表示数值的大小。但实际上存在着多种进位计数制,如二进制、八进制、十二进制、十六进制、二十四进制、六十进制等。在计算机内部,一切信息的存储、处理与传输均采用二进制的形式,这是因为二进制数具有在电路上容易实现,可靠性高,运算规则简单,可直接用作逻辑运算等优点。但由于二进制数的阅读和书写很不方便,因此在阅读和书写时又通常采用八进制数和十六进制数来表示。表1-2列出了常用的进位计数制。
表1-2 常用进位计数制
(1)十进制
十进制(Decimal System)有0~9共10个数符,基数为10,权系数为10i(i为整数),计数规则为“逢10进1,借1当10”。对十进制的特点我们非常熟悉,因此不再详细介绍。
(2)二进制
二进制(Binary System)与十进制类似,即二进制中只有两个数字符号(0和1)。二进制的基本运算规则是“逢2进1,借1当2”,各位的权为2的幂。一个二进制数可以使用式(1-1)展开,例如:
(10011011)2=1×27+0×26+0×25+1×24+1×23+0×22+1×21+1×20
(3)八进制
八进制(Octal System)有8个数字符号(0、1、2、3、4、5、6、7),基数为8,权系数为8i(i为整数),计数规则是“逢8进1,借1当8”。由于8=23。一个八进制数可以使用式(1-1)展开,例如:
(574.36)8=5×82+7×81+4×80+3×8-1+6×8-2
(4)十六进制
十六进制(Hexadecimal System)有16个数字符号(0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,其中A、B、C、D、E、F分别对应十进制的10、11、12、13、14、15)。十六进制的基数为16,权系数为16i(i为整数),计数规则是“逢16进1,借1当16”。一个十六进制数可以使用式(1-1)展开,例如:
(9AE.C8)16=9×162+10×161+14×160+12×16-1+8×16-2
总结以上4种进位计数制,可以将它们的特点概括为每一种计数制都有一个固定的基数,每一个数位可取基数中的不同数值:每一种计数制都有自己的位权,并且遵循“逢r进1”的原则。
注意:为了区分不同进制的数,在数字(外加括号)的右下角加脚注10、2、8、16分别表示十进制、二进制、八进制和十六进制。或将D、B、O、H4个字母放在数的末尾以区分上述4种进制。例如,548D或548表示十进制数,10011101B表示二进制数,463O表示八进制数,3F5H表示十六进制数。
3.计算机内部采用二进制的原因
人们日常使用的是十进制,计算机内部之所以采用二进制,其主要原因是二进制具有以下优点:
①技术上容易实现。用双稳态电路表示二进制数字0和1是很容易的事情。计算机使用二进制进行编码,而不是人们熟悉的十进制,最重要的原因是二进制物理上更容易实现。因为电子器件大多具有两种稳定状态(on/off),可以用二进制两个数字符号0和1表示。比如晶体管的导通和截止、电压的高和低、磁性的有和无等。
②可靠性高。二进制中只使用0和1两个数字,传输和处理时不易出错,因而可以保障计算机具有很高的可靠性。
③运算规则简单。与十进制数相比,二进制数的运算规则要简单得多,这不仅可以使运算器的结构得到简化,而且有利于提高运算速度。
④与逻辑量相吻合。二进制数0和1正好与逻辑量“真”和“假”相对应,因此用二进制数表示二值逻辑显得十分自然。
⑤二进制数与十进制数之间的转换相当容易。人们使用计算机时可以仍然使用自己所习惯的十进制数,而计算机将其自动转换成二进制数存储和处理,输出处理结果时又将二进制数自动转换成十进制数,这给工作带来极大的方便。
4.二进制的运算规则
二进制运算有算术运算、逻辑运算和移位运算等,这里主要介绍加法、乘法和逻辑运算。
(1)加法运算规则
0+0=0,0+1=1,1+1=10
注意:1+1=10,等号右边10中的1是进位。
(2)乘法运算规则
0×0=0,0×1=0,1×1=1
【例1-1】 计算11011001+10011011的值。
【例1-2】 计算1100×1011的值。
(3)逻辑运算规则
二进制数1和0在逻辑上可以代表“真”与“假”、“是”与“否”、“有”与“无”。这种具有逻辑属性的变量称为逻辑变量。计算机的逻辑运算和算术运算的主要区别是:逻辑运算是按位进行的,位与位之间不像加减运算那样有进位或借位的联系。逻辑运算主要包括3种基本运算:逻辑加法(又称“或”运算)、逻辑乘法(又称“与”运算)和逻辑否定(又称“非”运算)。此外,“异或”运算也很有用。
①逻辑加法(“或”运算)。逻辑加法通常用符号“+”或“∨”表示。逻辑加法运算规则如下:
0+0=0,0∨0=0;0+1=1,0∨1=1;1+0=1,1∨0=1;1+1=1,1∨1=1
可以看出,逻辑加法有“或”的意义。也就是说,在给定的逻辑变量中,A或B只要有一个为1,其逻辑加的结果为1;两者都为1则逻辑加的结果为1。
②逻辑乘法(“与”运算)。逻辑乘法通常用符号“×”或“∧”或“·”表示。逻辑乘法运算规则如下:
0×0=0,0∧0=0,0·0=0;0×1=0,0∧1=0,0·1=0;
1×0=0,1∧0=0,1·0=0;1×1=1,1∧1=1,1·1=1
不难看出,逻辑乘法有“与”的意义。它表示当参与运算的逻辑变量都同时取值为1时,其逻辑乘积才等于1。
③逻辑否定(非运算)。逻辑非运算又称逻辑否运算。其运算规则为:
即非0等于1; 即非1等于0
④异或逻辑运算(半加运算)。异或运算通常用符号“⊕”表示,其运算规则为:
0⊕0=00同0异或,结果为0; 0⊕1=10同1异或,结果为1;
1⊕0=11同0异或,结果为1; 1⊕1=01同1异或,结果为0
即两个逻辑变量相异,输出才为1。