位运算作者(邦的轩辕)

位运算

运算符号运算法则
与(&)两个 位都为1时值才为1
或()两个 位只要有一个数为1,值就为1
非(~)取反,0变成1,1变成0
异或()两个位相同为0,相异为1

记住一点,位运算是将十进制的数转化为二进制后进行的运算,就像十进制的加减乘除一样,不过二进制下更多的是加1,减1,乘以2,除以2,因为是二进制嘛

***位运算符的计算主要用在二进制中。实际开发中也经常会遇到需要用到这些运算符的时候,同时这些运算符也被作为基础的面试笔试题。所以了解这些运算符对程序员来说是十分必要的。于此,记录下我所理解的运算符:***如果以开关开灯论:有这样两个开关,0为开关关闭,1为开关打开。

与运算(&)(两个二进制下的位都是1,值才是1)

例如,32&8结果是几呢,我们来看看
32在二进制下表示为0001 0000
8在二进制下表示 为 0000 1000
进行位与运算,因为两个位都为1时,值才为1
所以结果是0000 0000
`#include<bits/stdc++.h>
using namespace std;
int main()
{
cout<<(int)(32 & 8);//这里要用到强制转换,因为位运算的结果还是二进制下的,我们无法直接输出,所以需要加一个(int)进行强制转换,来达到输出十进制的目的
return 0;
}

`
果不其然,运行结果为0

或运算(两个 二进制下的位只要有一位为1,值就为1)

在或运算中两个开关是并联的,即一个开关开,则灯开。
如果任意一个开关开了,灯都会亮。
只有当两个开关都是关的,灯才不开。

理解为A(或)|B任意开则开
我们还是举个例子
例如32与8进行或运算,

32在二进制下表示为 0001 0000
8在二进制下表示 为 0000 1000
(从左往右规定第几位)
第一位,0与0进行或运算,结果为0,因为都是零,没有1;
第二位,0与0进行或运算,结果为0,因为都是零,没有1;
第三位,第六位,第七位,第八位都类似;
第四位,第五位是1与0进行或运算,因为两个 二进制位上有一个1,所以结果为0;
最后结果为0001 1000,再进行强制转换,输出40;
代码如下;

#include<bits/stdc++.h>
using namespace std;
int main()
{
cout<<(int)(32|8);
return 0;

}

非运算(在二进制下对位上的数进行取反,如1取反变成0,0取反变成1)

我们对32进行非运算,正如名字所说,取反,取反,取反
非运算即取反运算,在二进制中1变0,0变1

运算方法:取相反数减一

异或运算(相同为0,相异为1)

异或运算通俗地讲就是一句话
同为假,异为真

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值