Dim cn As Integer
cn = 10 Eqv 2
MsgBox cn
我认为cn = 7 但是 cn = -9 我不明白为什么是-9?
请大家帮个忙!告诉我是什么原因!

解决方案 »

  1.   

    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中的例子!
    我也不知道微为什么,希望有人说说?
      

  2.   

    你得到的cn是一个16位整数。
    EQV(逻辑相等,或者等阶)的定义是:当两个表达式同时为真或同时为假时,结果为真,否则为假。    10=0000000000001010
    eqv  2=0000000000000010
    -----------------------
        cn=1111111111110111由于VB中的integer是带符号整数,所以首位为1的这个结果是一个负数,转成十进制数为-9。
      

  3.   

    >你得到的cn是一个16位整数。
    >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
      

  4.   

    Eqv相应位相异得0,相同得1
    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
      

  5.   

    计算机里的数一般是以8 * 2的0到n次方位二进制来表示的,
    8 16 32 64位,不可能是其它不规则的位数
    不明白为什么会以为cn = 7呢
    计算机里最低的应该是8位的吧,即使是Byte,也有高4位呀,怎么能不管呢?
    ljhdi()还知道加一取反,看样子象是计算机专业的,唉~
      

  6.   

    viena叹什么气?
    CSDN 不一定就是计算机专业人员活动的天下,它是所有热爱(或者被迫热爱)编程的人员讨论和解决问题的地方,计算机专业的或许在这方面更有优势,但是单凭“取反加一”这么四个字,如果不是计算机专业的是不是就能听懂?
      

  7.   

    没什么,是开玩笑,
    因为ljhdi()一般是被我"石欠"的对象,呵呵,
    sworddx很就不见了,有空也到非技术区来灌灌水啊~
      

  8.   

    喔HOHO,還有人记得我啊……高考完了就一下子变懒了,大一期末才想起上上CSDN呢=)一定去!