Eqv 运算符示例 本示例使用 Eqv 运算符来做两个表达式结果的逻辑等价(logical equivalence)。Dim A, B, C, D, MyCheck A = 10: B = 8: C = 6: D = Null ' 设置变量初值。 MyCheck = A > B Eqv B > C ' 返回 True。 MyCheck = B > A Eqv B > C ' 返回 False。 MyCheck = A > B Eqv B > D ' 返回 Null。 MyCheck = A Eqv B ' 返回 -3(位比较的结果)。 上面时MSDN中的例子! 我也不知道微为什么,希望有人说说?
本示例使用 Eqv 运算符来做两个表达式结果的逻辑等价(logical equivalence)。Dim A, B, C, D, MyCheck
A = 10: B = 8: C = 6: D = Null ' 设置变量初值。
MyCheck = A > B Eqv B > C ' 返回 True。
MyCheck = B > A Eqv B > C ' 返回 False。
MyCheck = A > B Eqv B > D ' 返回 Null。
MyCheck = A Eqv B ' 返回 -3(位比较的结果)。
上面时MSDN中的例子!
我也不知道微为什么,希望有人说说?
EQV(逻辑相等,或者等阶)的定义是:当两个表达式同时为真或同时为假时,结果为真,否则为假。 10=0000000000001010
eqv 2=0000000000000010
-----------------------
cn=1111111111110111由于VB中的integer是带符号整数,所以首位为1的这个结果是一个负数,转成十进制数为-9。
>EQV(逻辑相等,或者等阶)的定义是:当两个表达式同时为真或同时为假时,结果为真,否则为假。
>
> 10=0000000000001010
>eqv 2=0000000000000010
>-----------------------
> cn=1111111111110111
>
>由于VB中的integer是带符号整数,所以首位为1的这个结果是一个负数,转成十进制数为-9。在按位逻辑运算中则是,当两个位同时为0或同时为1时,结果为1,否则为0。
即
0 eqv 0=1
0 eqv 1=0
1 eqv 0=0
1 eqv 1=1
所以 10=0000000000001010
eqv 2=0000000000000010
-----------------------
cn=1111111111110111=-9
10和2默认是integer,
integer是16位(二进制)有符号整数,以补码表示
其中最高位为符号位,0为正,1为负
10 = 0000 0000 0000 1010
2 = 0000 0000 0000 0010
Eqv得1111 1111 1111 0111
补码是取反+1,1111 1111 1111 0111是-9
8 16 32 64位,不可能是其它不规则的位数
不明白为什么会以为cn = 7呢
计算机里最低的应该是8位的吧,即使是Byte,也有高4位呀,怎么能不管呢?
ljhdi()还知道加一取反,看样子象是计算机专业的,唉~
CSDN 不一定就是计算机专业人员活动的天下,它是所有热爱(或者被迫热爱)编程的人员讨论和解决问题的地方,计算机专业的或许在这方面更有优势,但是单凭“取反加一”这么四个字,如果不是计算机专业的是不是就能听懂?
因为ljhdi()一般是被我"石欠"的对象,呵呵,
sworddx很就不见了,有空也到非技术区来灌灌水啊~