0
点赞
收藏
分享

微信扫一扫

位运算 (|,&,^,~,<<,>>)

他说Python 2022-01-03 阅读 70

蒟蒻的我,又来写文章了

今天要说的是位运算

很多刚学c++的小垃圾朋友,可能就会说:

“哇哇哇,这不就是我刚刚学的&&,||,!吗?”

哦哦哦,不好意思,这种垃圾东西叫逻辑运算符

它得到的结果只是0或者是1

然而

位运算算得到的不仅仅这些

详见下表

将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0。如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1;因此将原来的数与减去1后的数字进行与运算后会发现为零。

& 按位与运算符:两位同时为1,结果才为1,否则为0
| 按位或运算符:两位中有一个为1,结果就为1
^ 异或运算符:两位值不同,结果为1,否则为0
~ 取反运算符:将0变1,1变0,就是反着来
<< 左移运算符:各二进制位全部左移若干位,左边丢弃,右边补0
>> 右移运算符:各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃

两个不同长度的数据进行位运算时,系统会将二者按右端对齐,然后进行位运算。短的那个数据如果是负数,左边补1,否则补0

但是它刚拿到手的红薯,还烫,等它凉一下,就可以尝到甜味

& 按位与运算符

比如,选择结构里的判断奇偶

用弱鸡做法就是

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
int n;
int main ()
{
    cin >> n;
    if (n % 2 == 1)
    {
    	cout << "1";
	}
	else
	{
		cout << "0";
	}
    return 0;
}

用上B格超高的 & 就很nice

因为它的的主要作用是:两位同时为1,结果才为1,否则为0

SO,我们可以用它来求一个数的最低位的二进制值

请问大家,是否灵光乍现

最低位?那不就能……

判断奇偶!!!

很简单,我们让它& 1就行了

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
int n;
int main ()
{
    cin >> n;
    if (n & 1)
    {
    	cout << "1";
	}
	else
	{
		cout << "0";
	}
    return 0;
}

未完待续……

举报

相关推荐

位运算(&、|、^、~、>>、<<)

【位运算】

位运算

逻辑运算 位运算

位运算操作

java 位运算

认识 位运算

0 条评论