威纶通官方论坛

位取反的问题

[复制链接]
发表于 2013-7-29 20:21:26 | 显示全部楼层 |阅读模式
在宏里面我想要一个位取反的写法。
a=1^a
a=a-1(为什么加不行,减就行?a=a+1)
a=not a
都可以,但是专门是位逻辑的~符号不行
a=~a
是哪里出问题?
还有,我分不清
and
or
&
|(或)
用于什么场合?
发表于 2013-7-30 17:51:29 | 显示全部楼层
我还奇怪 ~ 符号没有起作用呢。谢谢。
 楼主| 发表于 2013-7-31 11:26:24 | 显示全部楼层
自己顶一下,几个问题。
发表于 2013-7-31 23:32:51 | 显示全部楼层
本帖最后由 浮云游子 于 2013-7-31 23:55 编辑

and  or & |(或)用于什么场合?
——这几个是逻辑运算符,用于逻辑判断,就像数电似的

比如在一个配方名称查询宏指令中:

   if name[0]==temp[0] and name[1]==temp[1] and name[2]==temp[2] and name[3]==temp[3] then
   //如果输入名称与当前名称相同,则......

这里的and就是指几个条件同时满足
发表于 2013-7-31 23:54:16 | 显示全部楼层
回复 1# 芳季


说明书上有写明:移位运算符(<< >>)和位运算符(&|^~)通常被用来操作字符型变量、短整型变量和双整型变量的位。

故而,在a=~a这样的语句中,a是个short或char型,而不是bool型
所以,除了使用逻辑运算符(NOT)和上面提到的各种,还可以使用内置函数INVBIT来取反,如
bool a
GetData(a, "Local HMI", LB, 0, 1)
INVBIT(a, a, 0)
SetData(a, "Local HMI", LB, 1, 1)
 楼主| 发表于 2013-8-1 18:32:16 | 显示全部楼层
哦。知道。先记着了。
您需要登录后才可以发帖 登录 | 注册

本版积分规则

回复帖子

Archiver|小黑屋|威纶通官网 ( 粤ICP备06054553号 )

GMT+8, 2024-5-20 01:52

Powered by Discuz! X3.4

© 2001-2023 Comsenz Inc.

快速回复 返回顶部 返回列表