关于C语言中的位运算符的学习即应用

#关于C语言中的位运算符的学习即应用

一.运算符的种类和运算规则:

   &      与:全1则1,有0则0
   |       或:有1则1,全0则0
   ^   异或:相同为0,不同为1
   ~  取反:~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0
   << 左移:用来将一个数的各二进制位全部左移N位,右补0
   >> 右移:将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0

二.各种位运算符的应用:

1.  & 运算

    a.清零运算 

        若想对一个存储单元清零,即使其全部二进制位为0,只要找一个二进制数,其中各个位符合以下条件:

           原来的数中为1的位,新数中相应位为0。然后使二者进行&运算,即可达到清零目的。

    b.取一个数中某些指定位

         取一个数的哪几位就用一个相应位置为1的数与该数按位相与

2. | 或运算

         按位或运算常用来对一个数据的某些位定值为1

3. ^ 异或运算

      a.使特定位置翻转

           与特定位置为1的数进行异或运算

      b.0^x=x

      c.不使用临时变量,交换两个数的值

         a=a^b;

         b=b^a;

         a=a^b;

4.~ 取反运算

        一元运算符,用于求整数的二进制反码,即分别将操作数各二进制位上的数取反

5.左移运算符

         左移<<:高位丢弃,低位补0

6.右移运算符

         右移>>:正数:低位丢弃,高位补0

                      负数:低位丢弃,高位补1