C语言位操作(二)

2013-04-10 11:20:28 · 作者: · 浏览: 1141

 

  2. 高位第四位置0:

  第四位置零,其他位保留原值。

  a&0111

  3.置第三位为1:

  其他位保留原值,第三位置一。

  a|0100

  4.第三位置1,其他位置0:

  (a|0100)&0100

  总结:记住四个字 “与零或一” 即 “&0 |1” 功能对应 “置0置1”

  所有需求都往这个上转化,先由此确定选用的位操作符,再看其他位是否需要保留,或者进一步选择下一步操作的位操作符。

  比如:取某位,相当于其他位置0,所以就要用&操作。

  再比如上方第四个例子。

  抑或

  a = 1001

  a^1111 = 0110 //相当于取反

  a^0000 = 1001 //相当于没变化

  一个抑或的小例子:

  题目:交换两个数,不用第三块儿内存

  a ^=b;

  b ^=a;

  a ^=b;

  或

  a = a + b;

  b = a - b;

  a = a - b;

  知识点:a^b^b = a; 即两次抑或相当于^0000,值不变。