位运算概念与运用

本文介绍了位运算的概念,包括位与(&)、位或(|)、位异或(^)、位取反(~)、左移(<<)和右移(>>)等运算符,并探讨了它们的优先级和在程序设计中的实际运用,如快速乘除、位移、奇偶判断、数值交换等场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序中的所有数在计算机内存中都是以二进制的形式储存的,位运算就是直接对整数在内存中的二进制位进行操作的运算

位运算符:

 &   按位与(and)
  |    按位或(or)
 ^   按位异或(xor)
 ~   按位取反(not)
 <<   左移(shl)
 >>   带符号右移(shr)

&与运算
“&”是双目运算符,二进制对应位,同为1则为1,否则为0
例如(二进制数1010和0110)
1010&0110=0010

|或运算
“|”是双目运算符,二进制对应位,同为0则为0,否则为1
例如(二进制数1010和0110)
1010|0110=1110

^异或运算
“^”是双目运算符,二进制对应位,相同则为0,不同则为1
例如(二进制数1010和0110)
1010^0110=1100

~取反运算
“~”为单目运算符,二进制位,1变为0,0变为1
例如(二进制数1010和0110)
~1010=0101,~0110=1001

<<左移运算
“<<”是双目运算符,a<<n把a的二进制的各二进位全部左移n位,低位补0
例如(a=10(二进制为1010))
a<<3得到a=80(二进制为1010000)

>>右移运算
“>>”是双目运算符,a>>n把a的二进制的各二进位全部右移n位,低位补0
例如(a=10(二进制为1010))
a>>2得到a=2(二进制为10)

优先级

优先等级运算符
1~
2<<、>>
3&
4^
5|
6&=、^=、|=、<<=、>>=

运用:

一、n乘以2:n<<1
二、n除以2:n>>1
三、n乘以2的m次方:n<<m
四、n除以2的m次方:n>>m
五、判断n的奇偶:n&1奇为1,偶为0
六、交换n,m的值:n^=m; m^=n; n^=m;
七、n的绝对值:(n^(n>>31))-(n>>31);
八、n,m的最大值:n^((n^m)&-(n<m));
九、n,m的最小值:m^((n^m)&-(n<m));
十、n,m符号是否相同:(n^m)>=0;同为1,不同为0
十一、n是否为2的幂:n&(n-1);是为0,不是为非0
十二、n对m取余(m必须为2的幂):n&(m-1);
十三、n,m的平均值:((n^m)>>1)+(n&m);
十四、n+1:-~n;,n-1:~-n;
十五、n的相反数:~n+1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值