1000,9999]范围内同时满足以下与9999相邻的两个数条件的十进制数. ⑴其个位数字与十位数字之和除以10所得

BCD码的最大值是9999,因为一个字16个位,每四个为代表一个十进制的数;

1001:对应的就是9999,最大值

以上的二进制数,在十六进制里的表示也是16#9999,但是它十进制值不是9999,而是39321

一个字节的十六进制数最大值是:FFFF

9999十进制转换为十六进制数是270F没有错,这里9999不是BCD码,而是十进制的一个数值;数据在

都是以二进制的形式存储的,格式上的不同,它的所表示的数也不同,比如某个数据时以BCD码的格式存储的,那么你要显示成十进制,就要进行转换,否者数值是不对的。以系统时钟为例,读取后的时间值是以BCD码存储的,假如取今年的年份,那么这个字节对应的BCD码就是,0001  0101 对应BCD码的值为15 ,但是系统显示的是十进制数,是21;所以要经过转化;

///我的理解是,BCD是一种数据的存储格式,这数据可以被用到别的数据场合,那么它表示的意思就不同了。

  BCD码(Binary-Coded Decimal?)是二进制编码的十进制数的缩写,BCD码用4位二进制数表示一位十进制数。BCD码各位的数值范围为2#0000~2#1001,对应于十进制数0~9。BCD码不能使用十六进制的A~F(2#1010~2#1111)这6个数字。BCD码本质上是十进制数,因此相邻两位逢十进一。

   BCD码的最高位二进制数是符号位,负数的符号位为1,正数为0。16位BCD码的范围为–999~+999。

   下图的拨码开关将显示的数字转换为4位二进制数。PLC用12个数字量输入点读取的是3位BCD码,它的值为2#01,即十六进制数16#829。


   BCD码没有单独的表示方法,而是借用了十六进制的表示方法,因此二者很容易混淆。

   下图是S7-300/400的BCD码和整数的相互转换指令,可以看到在指令中BCD码均用十六进制的形式表示。


   在程序中,怎么知道一个数字是BCD码还是十六进制数呢?

   1)看数据的来源和用途。BCD码一般用于输入和输出,例如来自拨码开关的数据是BCD码,送给显示

楼层的译码器芯片的是BCD码。

   在变量表和程序状态监控中,用十六进制格式监视BCD码。

   从上图可以看出,BCD码用十六进制格式输入,其最高位(符号位)为16#F(2#1111)。BCD码的低3位各位只能是0~9,如果是16#A~16#F则会出错。

   下图用MW42提供计数器的预设值PV,如果用MOVE指令将十进制数348(对应的十六进制数为16#15C)传送给MW42,进入RUN模式时,操作系统将它转换为BCD码时出错(16#15C不是BCD码),不能切换到RUN模式。


我要回帖

更多关于 与9999相邻的两个数 的文章

 

随机推荐