C++ 位运算

位运算基本符号:

按位与         &= 按位与赋值

按位或              |=  按位或赋值

按位异或     ^=  按位异或赋值

<<  左移        <<=  左移赋值

>>  右移         >>=  右移赋值

按位取反

1.  按位与运算

左右操作数对应的每一位分别做逻辑与运算

     10            0 0 0 0 1 0 1 0

     29           0 0 0 1 1 1 0 1

10&29         0 0 0 0 1 0 0 0 

值8

2. 按位或运算

左右操作数对应的每一位分别做逻辑或运算

     10       0 0 0 0 1 0 1 0

     29      0 0 0 1 1 1 0 1

10|29      0 0 01 1 1 1 1

值为31

3. 按位异或运算
当左右操作数对应位不相同,位操作的结果才为1
 10             0 0 0 0 1 0 1 0
  29            0 0 0 1 1 1 0
1

 10^29      0 0 01 0 1 1 1

值为23

4. 左移

右操作数指定位数,将左操作数按位向左移动,腾空数位补0

 10<<2  00001010<<2

 40        00101000

C++进行算术左移时,不会移动符号位 

对于一个整数,每左移一位就相当于乘以2

5. 右移

右操作数指定位数,将左操作数按位向右移动

 12>>2  00001100>>2

 3          00000011

做算术右移时,不会移动符号位(左边空出的位用0或者1填补。正数用0填补,负数用1填补。注:不同的环境填补方式可能不同;)

对于一个整数,每右移一位就相当于整除以2

6. 按位取反

目运算。对操作数按位做逻辑

 -11            11110101

负数在计算机中用补码表示。11110101-11的补码

7. 位运算的复合赋值

运算的5个复合赋值与其他复合赋值的操作形式一致

例如,若有

  int a, b ;

  a&=b  等价于  a=a&b

  a|=b  等价于    a=a|b

  a^=b  等价于    a=a^b

  a<<=b  等价于  a=a<<b

  a>>=b  等价于  a=a>>b








              



  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值