前言
因为电路状态只有“开”和“关”两种状态,为了在电路中进行数字计算,所以在计算机(电路)中使用了二进制计数系统,该系统只使用0和1。
在存储器中,也是使用二进制的计数系统。
二进制是以2为基的数制。在二进制系统中,用于表示高和低的两个逻辑电平分别是逻辑1和逻辑0。
在数字电路中,电平表示位(bit)。
由于二进制用于所有的数学系统,所以就需要有一种方式将我们常用的十进制转化为二进制。另外,为了将数字电路输出的二进制转化为人们可使用的十进制形式,还需要一种将二进制转化为十进制的方法。
前言
本章节就简单讲述以下内容: – PLC中常用的数制; – 数制之间的相互转化方式; – 各种数制在PLC中的存储方式。
数制
在PLC中,常用的数制有以下几种: – 十进制 – 二进制 – 八进制 – 十六进制 – BCD码 – BIN码
– 格雷码(不做讲解) – 7段码(不做讲解)
下面分别讲述这几种编码的表述形式与转化方式 十进制回顾一
十进制是一个位权计数系统;所谓位权计数系统,意思就是每一个数字所在的位置都有一个特定的权(值)。
例如:数字5根据小数点的不同位置代表不同的值。数字0.5,5,500都包含一个5,但是每个5的位置不同,所以这几个数大小就不一样。
在十进制中,使用0,1,2,3,4,5,6,7,8,9十个基本符号,每个符号称为一个数位。 例如:60328.4的计算方法:
6x104+ 0x103 + 3x102 + 2x101 + 8x100 + 4x10-1
十进制计数系统回顾二
在本例中将每个位置的权值相加,用来确定十进制的值。 6x104+ 0x103 + 3x102 + 2x101 + 8x100. + 4x10-1=60328.4
需要注意的是,本例中0没有值,但是对于位权而言,还需要0作为一个占位符。 在上面的讲述中,由于大家都已经习惯于使用十进制思考,所以这样处理就显得毫无必要,但是对于下面要讲到的数制来说,该处理过程就非常有必要了。产生这种必要性的原因是人们不习惯用2,8,16作为基数的系统进行思考。
在数字60328.4中最高位是6,最低位是4,6在数字的最左边,4在数字的最右边,小数点将整数与小数部分分割开来;实际上,所有数制系统都是类似的!
二进制计数系统一
与十进制系统一样,二进制系统也是一个位权计数系统。由于二进制系统只使用0和1这两个基本符号,所以它是一个基数为2的系统。它的位权如下表:
二进制系统的计算
二进制系统的计算:二进制系统的计算和十进制类似。例如:0011+0101=1000;0111+0001=1000。
在右表,是十进制与二进制的一个对照表
二进制与十进制的转换:加权求和法
如果必须确定二进制数字对应的十进制数;可以采用加权求和的方法来解决。该方法就是将每一位为1的位权值累加起来。
例如:将1101转换为十进制。
•
1101(2)=1X23+ 1X22 + 0X21 + 1X20
=13 (10)
二进制与十进制的转换:基数相乘法一
在将不同的数制的数字进行互相转换时,还可以用到另一种重要的方法称之为基数相乘法。举例如下:
例如:将11100 (2)转换为十进制数。 第一步:将0+最高位 第二步:和乘以2
第三步:将乘积加到下一位
第四步:从第二步重复一直到最后一位 解((((0+1)X2+1)X2+1)X2+0)X2+0=28
在以上例二进制解法中由于重复使用了二进制计数系统的基数和值相乘的运算,所以称之为基数相乘法。
二进制与十进制的转换: 基数相乘法二 例如:将100101(2)转换为十进制数。 100101(2)=37 0+1=1;1×2=2; 2+0=2;2×2=4; 4+0=4;4×2=8; 8+1=9;9×2=18; 18+0=18;18×2=36 36+1=37
需要注意的是,如果需要对小数转换,需要用到基数相除法。
二进制与十进制的转换:基数相除法一 例如:将0.11(2)转换为对应的十进制数。 第一步:从将要转换的小数的最低位开始 第二步:将最低位数除以2 第三步:将商转为前面的小数 第四步:重复第二步一直到达小数点 1/ 2 =0.5; 1.5 / 2 =0.75 0.11(2)=0.75
二进制与十进制的转换:基数相除法二 例如:将0.101(2)转换为十进制数 解:
1/2 =0.5 0.5/2 =0.25 1.25/2 =0.625 0.101(2)=0.625
十进制与二进制的转换:基数相除法一
能够将十进制转换为二进制同样重要。基数相除法可以用在将十进制整数转换为二进制数。基数相除法进行转换的过程为:
第一步:将十进制数除以2
第二步:将得到的商的整数部分放到刚除过数的左边。 第三步:将得到的余数放到刚除过数的上边。 第四步:将得到的商除以2,重复第二步一直到商为1
十进制与二进制的转换:基数相除法二 例如:将14转换为二进制数字 14/2=7……0 7/2=3……1 3/2=1……1
1/2=0……1
• 所以
14=1110(2)
十进制与二进制的转换:基数相除法三 例如:将92转换为二进制数 92/2=46……0 46/2=23……0 23/2=11……1 11/2=5 ……1 5/2=2 ……1 2/2=1 ……0 1/2=0 ……1
• 92=1011100(2)
十进制与二进制的转换:基数相乘法一
基数相除法用于十进制转换为二进制,将十进制的小数部分转换为二进制的时候就要用基数相乘法。
例如:将0.875转换为二进制数 0.875×2=1.750 ……1 0.75×2=1.5 ……1 0.5×2=1 ……1
• 0.875=0.111(2)
十进制与二进制的转换:基数相乘法二 例如:将0.375转换为二进制数 0.375×2=0.750 ……0 0.75×2=1.5 ……1 0.5×2=1 ……1
• 0.375=0.011(2)
进制转换:作业一
一:将下列二进制数转换为对应的十进制数
• 1、101(2)
• 2、1111(2) • 3、1101(2)
• 4、1010100(2) • 5、100001(2)
• 6、11101110(2)
7、11.11(2) 进制转换:作业二
一:将下列十进制数转换为对应的二进制数
• 1、4
• 2、10 • 3、15 • 4、16
5、20 6、140 7、375 8、23.5625 9、12.375 八进制与十六进制
在使用中人们很快发现,对任何数字使用二进制是一项十分可怕的事情;数字系统能够非常容易的处理二进制数,而人类面对一大串的0和1常常会头晕目眩。因此,在使用数字系统中还经常使用另外两种计数系统。8进制和十六进制。
8进制是一个以8为基的计数系统,该系统只使用0~7这8个数字。满8就进位。 十六进制是一个以16为基的计数系统,该系统使用数字0~9和字母A~F来计数。 8进制和十六进制提供了书写大量二进制数据的一种简化方法。 八进制的位权
八进制就是以8为基数的计数系统;这种计数系统使用0,1,2,3,4,5,6,7。八进制的位权如下:
八进制到十进制的转换:加权求和法 加权求和的方法同样也适用于八进制。 例如:将26(8)转换为十进制数。 26 (8)=2×81+6×80=16+6=22
八进制到十进制的转换:基数相乘法
基数相乘法同样也适用于八进制到十进制整数部分的转换;转换的过程与二进制到十进制的转换基本相同;唯一不同的是基数是8。
使用基数相乘法将26 (8)转换为十进制数。
• 26
(8)
=((2+0)×8)+6=22
八进制到十进制的转换:基数相乘法
例如:使用基数相乘法将377 (8)转换为十进制数。 377 (8) =((3+0)×8+7)×8+7 =(24+7)×8+7 =31×8+7 =248+7
• =255
八进制到十进制的转换:基数相除法
对于八进制的小数部分,同样适用于基数相除法,将基数改为8即可。 例如:将0.625 (8)转换为十进制数。 5 / 8 =0.625 (2 + 0.625)/8 =0.328125 (6+0.328125)/8=0.791 0.625 (8) =0.791
十进制到八进制的转换:基数相除法
同样的,十进制到八进制转换时整数部分使用基数相除法。 例如:将100转换为八进制数。 100 / 8 = 12 …… 4 12 / 8 = 1 …… 4 …… 1 100 = 144 (8)
十进制到八进制的转换:基数相除法 例如:将79转换为8进制数 79 / 8 = 9 …… 7
9 / 8 = 1 …… 1 …… 1 79 = 117 (8)
八进制数到二进制数的转换一
使用八进制的一个主要原因,也是八进制的一个主要优点就是八进制可以方便的转换为二进制,二进制也可以方便的转换为八进制。
要将八进制转换为二进制,可以把每一位八进制的数转换为三个一组的二进制数,然后连接起来就是要转换的二进制数。
例如:将144 (8)转换为二进制数。
• 1=001(2) • 4=100(2)
• 4=100(2) • 144
(8)
=001100100(2)
八进制到二进制的转换二
例如:将4075(8)转换为二进制数。
• 4=100(2) • 0=000(2) • 7=111(2) • 5=101(2)
• 4075(8)=100 000 111 101(2)
上例中,将二进制数字按照三位一组书写的简单方法就是所谓的二进制编码的八进制数,简称BCO。
二进制数到八进制数的转换
如果把用于获取BCO数的计算过程颠倒过来,就可以将二进制数直接转换为对应的八进制数。
例如:将10101110(2)转换为八进制数。 010 101 110(2)=2 5 6(8)
例如:将1111.11(2)转换为八进制数。 001 111.110(2)=17.6(8)
注意:在含小数的二进制数字转换过程中,以小数点为分界线,小数点右边的不够三位的在右边补0,小数点左边的不够三位在左边补0。
八进制与十六进制习题一 在17(8)后面的数字是什么?
将下列八进制数转换为十进制数。
• 100(8); • 1251(8)
26(8); 17(8)
; 567(8)
将下列十进制数转换为八进制数 10; 26; 100; 331; 1001; 八进制与十六进制习题二
将下列的八进制数转换为二进制数。 1:10(8) 2:32(8) 3:147(8)
将下列的二进制数转换为八进制数 1:101110111(2) 2:1101010000(2) 3:1011.1(2) 十六进制数:介绍
随着计算机技术的不断进步,更快的速度,更长的字节和地址长度也不断的出现;同样道理,PLC作为计算机技术的一个分支,同样随计算机技术的变化而不断的变化,从最初的4位到8位到32位。现在我们要学习的三菱的FX系列与西门子的S7-200系列都属于8位机,但是高级一点的PLC系统已经是16位机了,更高级的新式的机型已经是32位机。但是个人PC已经发展到64位了,我想不远的将来,PLC上也要应用的64位系统。
十六进制数:位权
十六进制数需要十六个字符。除了0~9这十个字符外,还使用了字母A~F,以满足十六个字符的需求。在十六进制中,这些字符不能看为字母,应该将其看为数字。例如 A(16)=10;B(16)=11等。
十六进制数到十进制数的转换: 基数相乘法一
同样,基数相乘法也可以应用到十六进制转换为十进制的过程中。 例如:将1F(16)转换为十进制数。 1F(16)=((0+1)×16+15) =16+15
=31
注意:要想熟练的进行十六进制数的转换,必须记住A~F所对应的十进制数,本例中F(16)=15
十六进制到十进制的转换: 基数相乘法二
例如:将1CE(16)转换为十进制数。 1CE(16)=((0+1)×16+12)×16+14 =462 =28×16+14 =448+14 =462
对于小数点部分,可以使用基数相除法。 将0.B4 (16)转换为对应的十进制数。 4 / 16=0.25 11.25 / 16 =0.703 0.B4 (16) =0.703
十进制到十六进制的转换: 基数相乘法
十进制到十六进制转换,整数部分是基数相除法,小数部分是基数相乘法。 例如:将692转换为十六进制数。 692 / 16 = 43 …… 4 43 / 16 = 2 …… B …… 2
• 692=2B4(16)
此处应该注意的是11等于B,而不应该写成11。
十六进制数到二进制数的转换
同八进制一样,十六进制也可以基于同样道理和二进制转换,不过十六进制是四位一组的转换方式。这种将二进制四位一组的编码方式称之为二进制编码的十六进制数,在PLC中,称这种编码方式为BCH码。
十六进制习题一
1:1FF(16)向上与向下数的一个数字各是什么? 将下列十六进制数转换为十进制数。 1:CA(16) 2:102(16) 3:BB6(16) 4:12A5(16) 将下列十进制数转换为十六进制数 1:237 2:462 3:681 4:1000.75 十六进制习题二
将十六进制数转换为二进制数 1:1A(16) 2:2B3(16) 3:3FF(16) 4:33B2(16) 将二进制数转换为十六进制数 1:110100001(2) 3:1111010111101(2)
将下列八进制数转换为十六进制数 1:21(8) 2:604(8)
二进制编码的十进制数:BCD码
为了增强功能,并达到一定程度的提高与标准化,人们开发出了不同的编码用于数字系统中,编码就是一组用于表示一个数字,字母或者符号的数位的组合。在绝大多数的情况下,编码是无权码。
在前面,我们讲解了八进制到二进制和二进制到八进制的转换,所使用的BCO与BCH码很直观,很容易理解。这主要是所有八进制数都可以用三位一组的二进制数来表示,而所有的十六进制数都可以用四个一组的二进制数来表示。
十进制数字0~9也可以使用BCH码同样的方式来表示。因为8,9必须编码为1000和1001,所以同十六进制一样,十进制也要求四位一组。这种四位一组的表示十进制的二进制数称之为BCD码。这主要是为了方便计算机与人们思维的互通。但是这样就会留下四个编码成为无效的编码。
二进制编码的十进制数:BCD码
请注意,BCD码是使用二进制码来表示的,但是它却不是二进制数。
例如:将36转换为BCD码得到
0011 0110(BCD) ;但是将二进制数0011 0110(2) 转换为十进制数后是54。 十进制数到BCD码的转换
举例 36=0011 0110 (BCD) ,92 =1001 0010 (BCD) BCD码到十进制数的转换,反转以上例子。
因篇幅问题不能全部显示,请点此查看更多更全内容