FOR I:= 15 TO 1 BY -1 DO
J:=DINT_TO_INT(ROUND(2**(I-1)));
K:= V_WORD/J;
IF K>=1 THEN
V_ARR[I]:=1;
V_WORD := V_WORD -J;
ELSE
V_ARR[I]:=0;
END_IF;
问题补充:
这是个WORD_TO_BIT打包的模块中的程序中的一部分。
这部分程序我不太明白。希望大家给讲解讲解,谢谢。
产品版区:SIMATIC S7-300(F)/S7-400(F/H/FH)
悬赏分:5 | 解决时间:2010-05-14 19:35:28 | 提问者: dave-1978 - 新生  第1级
最佳答案
就是把V_WORD的16位分别装到V_ARR[0..15]这个bool数组里
就是把10进制转换成2进制的算法:
若V_WORD >= 2的15次方 最高位为1 否则为0
若V_WORD -2的15次方 >= 2的14次方 第二位为1
若V_WORD -2的15次方 -2的14次方 >= 2的13次方 第三位为1
以此类推 可以得出每一位
回答者:
杰杰86
-
毕业实践员  第4级
2010-05-14 15:15:19
提问者对于答案的评价:
谢谢我有些明白了。非常感谢