蒟蒻的我,又来写文章了
今天要说的是位运算
很多刚学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;
}