风行者 发表于 2010-6-6 22:46:12

系统消息会用到

xz00311 发表于 2010-6-7 09:03:32

可以用来做运算之用

Tony_wistron 发表于 2010-6-7 10:07:46

很少用,頂頂

rtytext 发表于 2010-6-8 10:57:35

数据转换时会用到

foboy 发表于 2010-6-8 12:09:21

本帖最后由 foboy 于 2010-6-8 12:11 编辑

可能楼主明天它的意思,只是不知道实际使用中哪些地方会用到。
举个例子,比方说你要用WinGetState()函数检查一个窗口的状态,他返回的值可能是以下几个状态的和:
1 = 窗口存在
2 = 窗口可见
4 = 窗口可用(未被禁用)
8 = 窗口为激活状态
16 = 窗口为最小化状态
32 = 窗口为最大化状态
你想要判断这个窗口是不是最小化,就用:
$win_state=WinGetState("***","****")
If BitAND($win_state,8)==8 Then ***********

yarsye 发表于 2010-6-9 16:42:09


foboy 发表于 2010-6-8 12:09 http://www.autoitx.com/images/common/back.gif

首先非常感谢foboy
感谢你的解释
其实我还有点不清楚 当 BitAND($win_state,8)==8 按位于是8说明了什么?窗口是最小化状态?
BitAND($win_state,8)其中与8相与是确保窗口至少是激活状态 对吗
那为什么要等于8呢?
本人比较愚笨,望解释更详细点。谢谢。

C.L 发表于 2010-6-9 17:23:54

回复 21# yarsye

BitAND是按位与运算,是二进制的运算
BitAND($win_state,8)==8
8的二进制是1000,上面的代码是表示,$win_state的二进制的第4位必须是1,
比如:9 = 1001,10 = 1010等,如果$win_state 是7,那1000与0111 ,结果是0
BitAND($win_state,8)==8这条代码简单的来说是要求$win_state要比8大。

yarsye 发表于 2010-6-9 17:33:23

回复yarsye

BitAND是按位与运算,是二进制的运算
BitAND($win_state,8)==8
8的二进制是1000,上面的 ...
C.L 发表于 2010-6-9 17:23 http://www.autoitx.com/images/common/back.gif

感谢你的回复
你上面一条 信息说:
16 = 窗口为最小化状态
32 = 窗口为最大化状态
你想要判断这个窗口是不是最小化,就用:
$win_state=WinGetState("***","****")
If BitAND($win_state,8)==8 Then ***********

我现在就有一个地方不明白了 那就是”BitAND($win_state,8)==8这条代码简单的来说是要求$win_state要比8大。“ 比8大的有 16和32 , 这样的话==8就可以判断是不是最小化?
再次感谢你的阅读

C.L 发表于 2010-6-9 17:44:25

回复 23# yarsye

我上面的回复刚才断线了,没写完,刚才的大于8 ,是限于<16的
下面的你可以用二进制算一下:
8 and 8 = 1000 and 1000 = 1000
16 and 8 = 10000 and 1000= 0
32 and 8 = 100000 and 1000 = 0
<8 (7) and 8 = 0111 and 1000 = 0
所以
BitAND($win_state,8)==8 是用来判断8的,也就是窗口的激活状态,其他的数:1,2,4,16,32,和8进行按位与运算,结果都是0,只有$win_state= 8 时 这个等式才为真。

yarsye 发表于 2010-6-10 09:17:21

回复yarsye

我上面的回复刚才断线了,没写完,刚才的大于8 ,是限于
C.L 发表于 2010-6-9 17:44 http://www.autoitx.com/images/common/back.gif


    太详细了总算明白了 非常感谢
页: 1 [2]
查看完整版本: 白痴问个比较白痴的问题:在实际中我到底怎么样才会用到BitOR,BitAND,BitXOR?