一直以来,10进制转二进制都是用电脑的计数器切换到程序员模式中进行转换,今天才知道原来这个与8421有关系。
什么是8421?
8421就是二进制编码的十进制数,简称BCD码(Binarycoded Decimal)。
这种方法是用4位二进制码的组合代表十进制数的0,1,2,3,4,5,6 ,7,8,9 十个数符。
4位二进制数码有16种组合,原则上可任选其中的10种作为代码,分别代表十进制中的0,1,2,3,4,5,6,7,8,9 这十个数符。
最常用的BCD码称为8421BCD码,8.4.2.1 分别是4位二进数的位取值。 右图为十进制数和8421BCD编码的对应关系表:
十进制 | BCD(8421)码 |
0 | 0000 |
1 | 0001 |
2 | 0010 |
3 | 0011 |
4 | 0100 |
5 | 0101 |
6 | 0110 |
7 | 0111 |
8 | 1000 |
9 |
简单的说,一个四位组成的二进制数值,四个位分别用8421代表与十进制的关系,第一位是8,第二位是4,第三位是2,第四位是1。顺序是从左到右。在PLC中用四位二进制存储时如K1M0就是一个四位二进制组成的储存器,那么M3是第一位(用8代表),M2是第二位(用4代表),M1是第三位(用2代表),M0为第一位(用1代表)。
言归正传,十进制与8421关系就是直接将8、4、2、1中的任意数值相加的数,就是十进制对应二进制的数。
例如:8+4=12,那么就是四位二进制中的第一位与第二位相加,与上面K1M0对应的话,就是M3+M2=12,也就是二进制的1100=12。
同理,十进制的6就是4+2,也就是第二位+第三位,0110=6。
十进制的14就是8+4+2,就就是第一位+第二位+第三位,1110=14。
如此,也就可知道四位二进制分别代表数值0~15之间。
那么大于15的数是怎样算呢?
与8421同理,只是延展了这个算法。根据这个8、4、2、1的规则延展:128、64、32、16、8、4、2、1八位,八位二进制延展到十进制是255。
如十进制的217就是128+64+16+8+1=217(128+64+32=224超过217,所以跳过),也就是二进制的1101 1001=217。
同理,十六位十进制就可以延展到十进制的65535,这就是PLC中为什么16位的存储器只能是最大65535的数值了。