c语言位运算

                    c语言的按位运算的运算符 

                                &     按位与

                                |       按位或

                                ~      按位取反

                                ^       按位异或

                                 <<     左移

                                  >>     右移

     1,&(按位与)

             如果(X)i==1并且(y)i==1,那么(x&y)i=1;

             否则的话(x&y)i=0;

          按位与常用于两种应用:

    1.1 让某一位或某些位为0: X & 0XFE

          例子:0101 0101 & 1111 1110

                    0101 0101

                     1111  1110

         结果:  0101 0100

     1.2 取一个数中的一段:x & 0x0F

             例子:0101 1010 & 0000 1111

                        0101 1010

                        0000 1111

              结果:0000 1010

       2,|(按位或)

           如果(X)i==1  或(y)i==1,那么(x|y)i=1;

             否则的话(x&y)i=0;

          按位与常用于两种应用:

      2.1 使得一位或几位为1: x | 0x 01

      例子: 0101 1010 | 0000 0001

                  0101 1010

                  0000 0001

   结果:     0101 0111

      2.2 把两个数拼起来: 0x0F | 0xF0

      例子:0000 1111 | 1111 0000

              0000 1111

              1111 0000

  结果: 1111 1111

      3, ~      按位取反

        把1变成0,把0变成1

        例子:  ~(1010 0101)

         结果:     0101 1010

    4, ^     按位异或

             如果(X)i   ==(y)i,那么(x^y)i=0;

             否则的话(x^y)i=1;

              如果两个位相等,结果为0,不想等,结果为1;

         例子: (1010 1010)^(1010 0101)

                       1010 1010

                       1010 0101

            结果: 0000 1111

         对一个变量异或两次等于什么都没做,还是原来那个数;

                    x^y^y=x;

     5, <<     左移

              x<<y (等价于 x*=2^y;)

               x中的所有位向左移动y个位置,右边填0

              例子:   (1010 0101)<<1       

               结果 :  0100 1010

                            (1010 0101)<<2

                 结果:  1001 0100

         6,>>     右移

              x>>y(等价于x/=2^y)

           x中的所有位向右移动y个位置,左边填0

           例子:   (1010 0101)>>1     

           结果 :  0101 0010

                          (1010 0101)>>2

                结果:0010 1001

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值