一个整形数 int a ,对a的第一位取反 ,如何写表达式,越简洁越来

解决方案 »

  1.   

    你说的第一位是那一位?如果是最低的一位:a=a^1;如果是最高的符号位:a=a^0x80000000;
      

  2.   

    再简捷一点:
    a^=1;a^=0x80000000;
      

  3.   

    对最高位Integer.highestOneBit(i) 如果值不是0 那么最高位值就是1,对1取反就可以了,反之就是0,对0取反
    对最低位Integer.lowestOneBit(i) 如果值不是0 ,那么最低位就是1,对1取反就可以了 反之就是0 对0取反