计算机进制bcd啥意思,怎样理解二进制和十六进制及BCD码 | 北岛夜话

所谓“数制”,是指“数”的表示方法,即计数的方法。数制采用进位的方法,当数值增加到该位能表示的最大值时,会将位数增加一位(进位)。按照进位的规则进行计数的数制,称为进位数制。常见的进位数制有:二进制(Binary)、十进制(Decimal)和十六进制(Hexadecimal)。

1b18370c0ff25950dbc3084c0268cc50.png

人类的思维习惯于十进制(Decimal),所谓“逢十进一”。这个没什么好说的,地球人都知道。

本文要介绍的是PLC编程相关的概念,因此要重点介绍的是二进制(Binary)和十六进制(Hexadecimal)。

现代计算机普遍采用冯·诺伊曼(John von Neumann,1903~1957)的体系结构。美籍匈牙利科学家冯·诺伊曼根据电子元件的双稳特性,提出数字计算机应采用二进制进行存储和运算。

二进制(Binary)只有“0”和“1”两个数码,可以表示数字量的两种不同的状态,比如触点的吸合与断开,线圈的通电与断电等等。在PLC的存储单元中,可以使用一个“位(bit)”来表示“0”或者“1”两种值,8个“位”组成一个字节(Byte)。以西门子S7系列PLC为例,可以使用STL语句 “S  Q0.0”将Q0.0置为“1”。其中,“Q0.0”中的“Q”表示输出过程映像区(Output),第一个“0”表示第“0”个字节,第二个“0”表示该字节的第“0”位。当该指令执行后,PLC的输出模块的Q0.0将会有信号输出,它连接的继电器线圈会通电,常开触点吸合,接通相应的电路。

二进制采用“逢二进一”的规则,可以使用多位二进制数来表示数值。将最低位记为第0位,从右往左的第n位,其权值(数制中某位上的1所代表的数值)为2的n次方。

4345a9314fbbdd5ae45b93800c93bec9.png

在西门子S7系列PLC中,二进制常数以“2#”开始,比如:2#1101。二进制数可以转换成十进制数,转换方法是把各个位上的数乘以其权值,然后相加。比如2#1101,等于1乘以2的3次方(=8),加上1乘以2的2次方(=4),加上1乘以2的0次方(=1),等于十进制13。

903dd3d978c100a7cb564679eab380b3.png

由于二进制数位数太多,编程时书写起来不太方便。为了简化书写,同时保持二进制宜于“位”操作的特性,人们把四个二进制位组成一组,用来表示一个数。由于四个二进制位所成表示的最大数是2#1111(=15),于是就出现了十六进制的数制。十六进制的数码除了包括十进制的0~9之外,还包括A~F六个字母。A等于十进制的10,依次递增,F等于10进制的15。

十六进制的表示方法比较多,在C/C++中用前缀"0x"表示,比如上一篇文章中提到的“0x0384”;在VB中使用前缀"&H"表示,比如“&H1A2B”;在西门子S7系列PLC中,使用“16#”来表示16进制数。但通常情况下,在表示16进制数的时候,需要同时指出它的数据类型(后续会有专门文章介绍数据类型相关知识),比如B#16#56表示16进制数56,它的数据类型是字节(Byte)。

十六进制数可以很方便的转换成二进制数,只需要把每一位数转成二进制数,然后组合起来即可。比如B#16#56,其中16#5=2#0101,16#6=2#0110,所以16#56=2#1010110,如下图:

05d5f1fe62e9c60e3001f8824245b355.png

程序设计中还用到一种编码,称为BCD码。BCD是英文"Binary-Coded Decimal"的缩写,这种编码的数制是十进制。BCD码使用四个二进制数来表示一位十进制数,每一位允许的范围是2#0000~2#1001,也就是十进制的0~9,采用“逢十进一”的规则。

2684ba55eeb5e6b78d3aa5414fac196a.pngBCD码是有符号的,用最高位来表示符号,“0”表示正数,“1”表示负数。对于一个四位的BCD码而言(16个二进制位),能表示的范围是“-999~+999”。为什么呢?其实比较好理解,你想,最高位是符号位,那么就剩下了三位,由于每一位BCD码,其本质是十进制数,所以每一位最大的数都是9,所以三位数最大就是999,加上符号,所以四位BCD码能表示的十进制数的范围是“-999~+999”。同样的道理,八位BCD码(32个二进制位)能表示的十进制数的范围是“-9999999~+9999999”。

好了,关于PLC编程需要的数制的知识就先聊到这里了。相关参考文章:

扫描关注微信公众号:

来源:本站|   大小:293 KB|   下载次数:751次

20bd2df90d5f36f9c5718c1a254553ce.png

感谢您的支持,欢迎常来看看!

一点动力,多少随意

aeb761483b0d94d3327768571afa32e2.png

fc66b3521bfb0ce821c983ed17a39399.png

打开支付宝扫一扫,即可进行扫码打赏哦

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用以下代码实现: ```python import pandas as pd data = "2022,如雪如山,张天翼,人民文学出版社,8.5,15138,全部 7683 条,中国文学(小说类) 2022,当我们不再理解世界,[智利]本哈明·拉巴图特,人民文学出版社,8.3,13422,全部 6663 条,年度图书 2022,应得的权利,[澳]凯特·曼恩,京联合出版公司,8.8,3441,全部 1605 条,年度图书 2022,如雪如山,张天翼,人民文学出版社,8.5,15138,全部 7683 条,年度图书 2022,必有人重写爱情,,海南出版社,9.0,4287,全部 1865 条,年度图书 2022,看不见的女性,卡罗琳·克里亚多·佩雷斯,新星出版社,9.2,9167,全部 4031 条,年度图书" data_list = data.split(" ") data_list = [i.split(",") for i in data_list] df = pd.DataFrame(data_list, columns=["年份", "书名", "作者", "出版社", "评分", "评分人数", "评论人数", "板块"]) print(df) ``` 输出结果如下: ``` 年份 书名 作者 出版社 评分 评分人数 评论人数 板块 0 2022 如雪如山 张天翼 人民文学出版社 8.5 15138 全部 7683 条 中国文学(小说类) 1 2022 当我们不再理解世界 [智利]本哈明·拉巴图特 人民文学出版社 8.3 13422 全部 6663 条 年度图书 2 2022 应得的权利 [澳]凯特·曼恩 京联合出版公司 8.8 3441 全部 1605 条 年度图书 3 2022 如雪如山 张天翼 人民文学出版社 8.5 15138 全部 7683 条 年度图书 4 2022 必有人重写爱情 海南出版社 9.0 4287 全部 1865 条 年度图书 5 2022 看不见的女性 卡罗琳·克里亚多·佩雷斯 新星出版社 9.2 9167 全部 4031 条 年度图书 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值