1.概述

位运算符含义运算规则
&与两位同为1得1,有0得0
|或两位同为0得0,有1得1
^异或两位相同为0,不同为1
~取反0变1,1变0
<<左移每个二进制位都左移若干位 a<<n,高位丢弃,低位补0
>>右移每个二进制位都右移若干位a>>n,无符号数高位补0,有符号数有的补0有的补符号位

比如在c语言中,long占4个字节,int占2两个字节,如果一个long类型数据和一个int类型数据进行与运算,则右端对齐,左侧补位方式有三种:

  • 若整型数据为正数或者无符号数,左边补16个0
  • 若为负数,补16个1

2.使用

(1)与运算&
  • 清零操作:令要清零得单元和该为为0的数值相与,比如二进制表示5为101,若要将最右侧1清零,可以与110相与,得100。
  • 取该数的指定几位:和清零操作类似,使用了与1不变,与0为0的特性
  • 判断奇偶:用if((a&1)==0)代替if(a%2==0)
(2)或运算|
  • 将一个数据的某些位置设为1
(3)异或运算^
性质:
  • 交换律
  • 结合律
  • 对任何数x,有x^x=0, x^0=x
  • 自反性
用途:
  • 翻转指定位置
  • 与0相异或值不变
  • 交换两个数
(4)取反~
  • 令一个数的某位为0
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐