| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1041 人关注过本帖
标题:一个判断问题~高手请进!
只看楼主 加入收藏
honker
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-6-30
收藏
 问题点数:0 回复次数:3 
一个判断问题~高手请进!
.while    ! (dwOption & F_STOP)
------------------------------------
这个是判断如果不等于停止标志执行循环
 这个条件你算下 比如dwOption等于2 就是停止标
   那么 00000010
        00000010 = 00000010
然后再进行取反操作
11111101 还是等于非0?还是要进入循环?!

[[it] 本帖最后由 honker 于 2008-8-16 00:02 编辑 [/it]]
搜索更多相关主题的帖子: 定义 
2008-08-15 15:06
ONEPROBLEM
Rank: 6Rank: 6
来 自:广西 南宁
等 级:贵宾
威 望:21
帖 子:1569
专家分:349
注 册:2008-7-11
收藏
得分:0 
这个好像是罗云彬的程序吧,我没学到这啊。但说说自己的看法吧:
这些都是位运算问题,所以,都要把它们转换成二进制来看才清楚。
如,这里的:
F_PAUSE        equ    0001h
F_STOP        equ    0002h
F_COUNTING    equ    0004h
可以看成:0000 0000 0000 0001 B(F_PAUSE)、0000 0000 0000 0010 B(F_STOP)、0000 0000 0000 0100 B (F_COUNTING)
为了表述方便,以下只说它的第0位到第3位,即F_PAUSE是0001 B,其它类推;
在这4个位中,第0位为1,则表示是暂停;第1位是1,则表示停止;第2位为1,则表示正在计算当中;
在程序中,它是用dwOption来判断的。dwOption也转换成二进制形式,然后,从这二进制中判断第0、1、2这前三位分别是否为1或0 ;

.if    dwOption & F_COUNTING
or    dwOption,F_STOP  
这的第一句,不管dwOptionr的第0、1位是什么(即暂停或停止),由于F_COUNTING是0100,“与”操作后,都为假,下一句就不执行了;但是,当dwOption的第2位是1,即它正处于计算中,则为真,or    dwOption,F_STOP 是要执行的;则执行这句后,dwOption的第1位是1,它就表示停止了。
其它的也是如此!
==========================
PS:讲得很啰嗦,不知道对LZ是否有用。暂且算是给自己增加一点回贴分吧。
2008-08-15 17:22
honker
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-6-30
收藏
得分:0 
呵呵`不错`虽然已经知道了`但还是谢谢这位兄弟~
2008-08-15 18:05
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
收藏
得分:0 
.while    ! (dwOption & F_STOP)

(dwOption & F_STOP)的结果是TRUE或者是FALSE, 而不是那一串2进制数.   

 !后面需要的是TRUE或者是FALSE, 而不是要进行2进制串的挨个取反.

不客气 再见
2008-08-16 06:12
快速回复:一个判断问题~高手请进!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019153 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved