m_bIssStop ^=1;
这句话应该怎样理解呢?

解决方案 »

  1.   

    m_bIssStop = m_bIssStop ^ 1;
    异或嘛
      

  2.   

    首先你要先明确m_bIssStop 是什么类型的数据,看他命名的方式在程序中应当是BOOL型变量那么m_bIssStop 不是0就是1.m_bIssStop ^=1; 就是m_bIssStop = m_bIssStop ^ 1;  也就是m_bIssStop 和1异或,即m_bIssStop 和1不同时为1.那么当m_bIssStop是0时,这条语句执行结果是m_bIssStop = 1;m_bIssStop是1时,这条语句执行结果是m_bIssStop = 0;  所以m_bIssStop ^=1;其实就是取反操作当然上面东西都是建立在m_bIssStop是BOOL型变量的基础上的,如果m_bIssStop不是BOOL型,那么你应该可以自己分析了
      

  3.   

    不要误导LZ同学。
    m_bIssStop无论是否是一个布尔变量都没有关系,也无论它是几个字节,只有最低位一个Bit指示一个开关,其它所有的Bits无论是什么值(0或者1)都与此操作无关。这个变量与1异或时,每操作一次最低位就翻转一次,相当于拨动了一次开关。
    例如一个数0X57,二进制是 01010111,与1异或第一次变成 01010110,最后一位变成了0。再异或一次,最后一位就恢复了,又变成了01010111。
    这就是两次异或值不变的道理。
      

  4.   

    http://www.yesky.com/imagesnew/software/javascript/html/jsoprxor.htm
      

  5.   

    在逻辑学中,逻辑算符 异或(符号为XOR或EOR或⊕)是对两个运算元的一种逻辑析取类型。
    但与一般的逻辑或不同,异或算符的值为真仅当两个运算元中恰有一个的值为真,而另外一个的值为非真[1]。
    转化为命题,就是:“两者的值不同。”或“有且仅有一个为真。”
    两个运算元(命题):A与B的异或一般写成A异或B,或者写成AXORB、、等等。
    在C语言中,写作A^B。