代码: public void removeMode(int mode)
{
this.mode &= ~mode;
}
这段代码中的this.mode &= ~mode;怎么解释,
不才,没有看懂,求助

解决方案 »

  1.   

    this.mode=(this.mode) & (~mode)
      

  2.   

    如想去掉第1,3,5,6位的1,传一个参数:00 00 00 00110101进去,取反变成FF FF FF 11001010,
    与this.mode进行与操作,在FF FF FF 11001010中是1的会保持不变,是0的会被置0,所以结果将this.mode的1,3,5,6位变成了0
      

  3.   

    malligator(不能再整天泡在CSDN里了!) ( ) :如果是
    this.mode=(this.mode) & (~mode)
    就是意味返回的结果总是000 00 0000000,
    是否?
      

  4.   

    这种东西在vc里面很多,但java不常见用二进制表示
    int mode1 是 1;
    int mode2 是 10;
    mode=mode1|mode2;用这种方法来判断当前的mode包含了哪些。
    如if(mode1|mode==1)说明mode包含mode1
    如果要把mode1从mode里面清楚出来,就要用上面的方式了mode&=~mode1;
    这时再看看mode|mode1的结果变成了0
      

  5.   

    mode&=~mode1;真实用意就是
    要把mode1从mode里面清楚出来,留下其余的内容给mode,似乎就是这个理
      

  6.   

    mode=mode & ~mode
    不就是把mode所有位置0吗?
    0 & ~0=0
    1 & ~1=0
      

  7.   

    to 楼上:
    this.mode &= ~mode;
    两个mode不一样,一个是对象属性,一个是方法的参数。
      

  8.   

    mode&=~mode1;
    意思就是说在mode中如果包含mode1的时候 就在其位置置'0'
    这样保证了mode的完整性能,只要就是替换mode中包含的mode1内容不再出现.对乎?
      

  9.   

    对的,其实就是mode = 0;
    ~以后,每一位和原来的都相反,导致&的结果必然是0,这个就是在代码级别(而不是用混淆器)防止反编译的一种举措
      

  10.   

    没看清,field mode 和argument mode,两个不同
      

  11.   

    大家都在学习,
    可能只是把一些问题更加清楚点认识。mode&=~mode1;
    field mode 和argument mode1,
    操作就是把mode中包含mode1的时候,都置位'0',长度mode一样保证.
      

  12.   

    var re=/a(\d)b/gi在正则表达式中,除了正常的匹配内容之外,为什么还需要添加
    ‘/gi’,
    正则表达式中这个‘/gi’是什么意思?