VB中XOR是什么意思.

Dim hiliteMenu As Long
hiliteMenu = HiliteMenuItem(Me.hwnd, hMenu, 0, MF_BYPOSITION Xor MF_HILITE)
MsgBox hiliteMenu
我将XOR换成AND的时候不能加亮显示,为什么.
AND不是和的意思么?和的意思的话应该两个标志符都可以使用,但是为什么不可以用
XOR是异或的意思,我是知道的,不过异或到底是什么意思?
三楼的说MF_BYPOSITION Xor MF_HILITE中的xor改成and时,只能两种条件都满足的情况下才行,这个条件是什么..

False Xor False =False
True Xor False =True
False Xor True =True
True Xor True =False
如果是两个数互相Xor的话,先化成2进制,然后对每位进行运算,相同则为零,不同则为1
如:
7 Xor 11
(7)10=(0111)2
(11)10=(1011)2
0 1 1 1
1 0 1 1
-Xor--------
1 1 0 0
(1100)2=12
所以7 Xor 11=12
又如
13 Xor 52

0 0 1 1 0 1
1 1 0 1 0 0
-Xor------------
1 1 1 0 0 1
所以13 Xor 52 = 57(111001的10进制)

替三楼回答:
MF_BYPOSITION Xor MF_HILITE
用Xor是因为VB传参数的机制就是这样的
MF_BYPOSITION是使用菜单项的位置(从序号0开始)来标示菜单项
MF_HILITE好像是加亮显示吧

MF_BYPOSITION = &H400&
MF_BYCOMMAND = &H0&
MF_HILITE = &H80&

这样VB就可以只传输一个参数,就获得2个值了
(Xor运算有一个特点,a Xor b Xor a = b,VB只需将HiliteMenuItem的最后一个参数MF_BYPOSITION Xor MF_HILITE的值在Xor一下MF_BYPOSITION就知道是用什么方式显示了)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-04-22
楼上几位说的都对。但你看了他们的答案后还不一定理解。
我给你解释以下a
=
1
Xor
b
=
2
如果确实a=1,那么
如果执行Print
a=1的话结果肯定是True,否则结果是False
同样,如果确实b=2,那么
如果执行Print
b=2的话结果肯定是True,否则结果是False
当a=1和b=2都为True或者都为False时,a
=
1
Xor
b
=
2的结果False(
当a=1和b=2一个为True另一个为False时,a
=
1
Xor
b
=
2的结果为True
第2个回答  2008-02-18
1 and 0 =0
1 or 0 =1

1 xor 0 =1
1 xor 1=0
0 xor 0 =0
0 xor 1=1

就是相同为0,不同为1
第3个回答  2008-02-18
xor说明:

如果表达式中有一个而且只有一个值为True,则结果为True。以下数字0代表假(False),1代表真(True)。最后一位数代表运行结果
0 xor 0= 0
0 xor 1= 1
1 xor 0= 1
1 xor 1= 0

HiliteMenuItem

VB声明
Declare Function HiliteMenuItem Lib "user32" Alias "HiliteMenuItem" (ByVal hwnd As Long, ByVal hMenu As Long, ByVal wIDHiliteItem As Long, ByVal wHilite As Long) As Long
说明
控制顶级菜单条目的加亮显示状态
返回值
Long,非零表示成功,零表示失败
参数表
参数 类型及说明
hwnd Long,拥有顶级菜单的一个窗口的句柄
hMenu Long,hwnd窗口的顶级菜单的句柄
wIDHiliteItem Long,欲加亮或撤消加亮的菜单条目的标识符。倘若在wHilite参数中设置了MF_BYCOMMAND标志,这个参数就用于指定要改变的菜单条目的命令ID。如果设置的是MF_BYPOSITION标志,这个参数就用于指定条目在菜单中的位置(第一个条目的位置为0)
wHilite Long,一系列常数标志的组合。其中包括MF_BYCOMMAND或MF_BYPOSITION,指出要改变的条目。也包括MF_HILITE,用于设置加亮状态;或者MF_UNHILITE,用于撤消加亮状态

由此可见MF_BYPOSITION Xor MF_HILITE中的xor改成and时,只能两种条件都满足的情况下才行。故用xor
相似回答