本帖最后由 peace_d641 于 2010-06-14 13:00:13 编辑

解决方案 »

  1.   

    ^即xor互斥或异或的位操作,具体是:位相同为0,不同为1。此外还有位操作符:&且,|或。
      

  2.   

    估计楼主看到这玩意了:
    error_reporting(E_ALL ^ ~E_NOTICE);
    呵呵
    看看比特运算:
    按位(bit)或:
    1|0=1,1|1=1,0|0=0
    参与运算的2个位只要有一个1,结果就是1
    按位与:
    1&1=1,1&0=0,0&0=0,只有有一个0,结果就是0,
    看成比特的乘法吧?1*1=1嘛,1*0=0,0*0=0,只不过二进制里不叫加减乘除罢了。
    按位异或:
    1^1=0,1^0=1,0^0=0,参与计算的2个操作数如果不相同则结果为1,比如1和0异或就是1
    这个看作二进制的加法(不要进位哈),看看1+1=0(10,进位不要),1+0=1,0+0=0.
    取反~,
    就是0变成1,1变成0,姑且看成取相反数吧。,二进制的相反数哦。
    好了,来个形象的例子:
    8位bit的吧,计算机专业的研究生有8位同学,现在要推荐博士,
    1 2 3 4 5 。8
    8个人哈,对应8个比特位吧,倒数第1bit为张三,李四,王五.....
    每得到一个8位的数看作一个推荐候选名单
    比如00000101比如这个,1代表对应的人推荐上博士啦哈,
    这个代表张三和王五候选了,现在要把王五从名单里移除,怎么办是不是把倒数第3位变成0,用比特运算怎么弄呢,
    一种就是00000101&11111011=00000001(名单只剩张三了)
    或者00000101-00000100=00000101+(-00000100)=
    00000101^~00000100(按照我上面的二进制加减法哦)=名单-王五
    与一个数相减等于加上他的相反数。所以E_ALL^~E_NOTICE应该明白了就是E_ALL减去E_NOTICE不要提示。
    windows编程里经常有这个东西,每位代表一个消息类型啦之类的。
    不明白继续问我哈。