位运算呐~

C++中位运算指按二进制的形式运算,用以解决系统软件中的二进制待处理问题。
并且在c语言中位操作运算符只能操作整形操作数,即带符号或者无符号的char、short、int、long类型!

在这里插入图片描述

1.按位与 &
 按位与是指:参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。这里的1可以理解为逻辑中的true,0可以理解为逻辑中的false。按位与其实与逻辑上“与”的运算规则一致。逻辑上的“与”,要求运算数全真,结果才为真。若,A=true,B=true,则A∩B= true。
 例如:
在这里插入图片描述
用途:
1.清零
2.取一些数中某些指定位
3.保留指定位

2.按位或 |

在这里插入图片描述
用途:
按位或运算常用来对一个数据的某些位定值 1;

3.按位异或 ^
在这里插入图片描述
用途:
1.使特定位翻转
2.与0异或,保留原值
3.交换两个值,不需要临时变量

void main()
{
	a=a^b;
	b=b^a;
	a=a^b
}

例如:a=3,即 11;b=4,即100。
想将a和b的值互换,可以用以下赋值语句实现:
a=a^b;
b=b^a;
a=a^b;
a=011(2)
(^)b=100(2)
a=111(2)
(a^b的结果,a已变成7)
(^)b=100(2)
b=011(2)
(b^a的结果,b已变成3)
(^)a=111(2)
a=100(2)
(a^b的结果,a已变成4)
–等效于以下两步: ① 执行前两个赋值语句:“a=a^b;”
和“b=b^a;”
相当于b=b^ (a^ b);
② 再执行第三个赋值语句: a=a^ b。由于a的值等于(a^ b),b的值等于(b^ a^ b),因此,相当于a=a^ b^ b^ a^ b,即a的值等于a^ a^ b^ b^b,等于b。很神奇吧!

4.取反运算符 !
它是一元运算符,用于求整数的二进制反码,即分别将操作数各二进制位上的1变为0,0变为1。

5.左移运算符 <<

左移运算符是用来将一个数的各二进制位左移若干位,移动的位数由右操作数指定(右操作数必须是非负值),其右边空出的位用0填补,高位左移溢出则舍弃该高位。

6.右移运算符 >>
右移运算符是用来将一个数的各二进制位右移若干位,移动的位数由右操作数指定(右操作数必须是非负值),移到右端的低位被舍弃,对于无符号数,高位补0。对于有符号数,某些机器将对左边空出的部分用符号位填补(即“算术移位”),而另一些机器则对左边空出的部分用0填补(即“逻辑移位”)。

7.位运算赋值运算符
位运算符与赋值运算符可以组成复合赋值运算符。

&=, |=, >>=, <<=, ^=
a & = b相当于 a = a & b
a <<= 2 相当于 a = a <<2

列举一些常见的二进制位变换操作:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值