您现在的位置是:主页 > news > 国外最大的素材网站/关键词搜索排名怎么查看
国外最大的素材网站/关键词搜索排名怎么查看
admin2025/5/5 1:49:43【news】
简介国外最大的素材网站,关键词搜索排名怎么查看,潍坊建网站,网站营销优化文章目录1、位运算概述2、位运算运算符3、(&)与运算操作4、常用操作1、位运算概述 1001 1011 最右边是最低位,最左边是最高位 计算机中所有的数据都是以二进制来存储的,即0、1两种状态 int a 17; int b 18; int c a b; …
文章目录
- 1、位运算概述
- 2、位运算运算符
- 3、(&)与运算操作
- 4、常用操作
1、位运算概述
1001 1011
最右边是最低位,最左边是最高位
计算机中所有的数据都是以二进制来存储的,即0、1两种状态
int a = 17;
int b = 18;
int c = a + b;
计算机先在机器内部将数字转换为二进制再计算
17:1 0 0 0 1
18:1 0 0 1 0
35:1 0 0 0 1 1
2、位运算运算符
运算符 | 含义 | 描述 |
---|---|---|
<< | 各二进位全部左移若干位,高位丢弃,低位补0 | 左移 |
>> | 各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移) | 右移 |
& | 两个位都为1时,结果才为1 | 与 |
| | 两个位都为0时,结果才为0 | 或 |
~ | 0变1,1变0 | 取反 |
^ | 两个位相同为0,相异为1 | 异或 |
举例:
1、(&)与运算符
- 0&0=0
- 0&1=0
- 1&0=0
- 1&1=1
2、(|)或运算符
- 0|0=0
- 0|1=1
- 1|0=1
- 1|1=1
3、(^)异或运算符
- 0^0=0
- 0^1=1
- 1^0=1
- 1^1=0
4、(~)取反运算符
- ~1=0
- ~0=1
5、(<<)左移运算符
a=1010 1101,a<<2是将a的二进制位全部左移二位、右补0,得结果1011 0100
6、(>>)右移运算符
a=1010 1101,a>>2是将a的二进制位全部右移二位、左补0,得结果0010 1011
7、求和
- 1+1=0
- 1+0=1
- 0+0=0
3、(&)与运算操作
1、清零
若想将一个单元清零(全部二进制位为0),只需要与一个所有位都为0的数相与(&)
a:1010 1011
b:0000 0000
a&b:0000 0000
2、取一个数的指定位
取1011 1010的最后四位,令一个数的最后四位为1,其余位为0
1011 1010 & 0000 1111 = 0000 1010
3、判断奇偶
一个数若为奇数,则它的二进制数末位1,偶数为0
if(a&1) cout<<"奇数";
else cout<<"偶数";
4、常用操作
1、求一个数的二进制数的第k位✅
10的二进制为1010,1为第三位,0为第二位,1为第一位,0为第0位
#include<bits/stdc++.h>
using namespace std;
int main()
{int n=10;for(int k=3;k>=0;k--) cout<<(n>>k & 1);return 0; //输出结果为1010
}
2、lowbit(n)计算二进制位中最低位1出现的位置✅
一个整数的负数是原数的补码,补码是对原数取反加1,即-n=~n+1
。
x&-x 与 x&(~x+1) 是等效的
举例说明为什么x&-x可以计算最低位1的位置:
n:1010 1000
~n: 0101 0111
~n+1:0101 1000
n&(~n+1):0000 1000
10(1010),lowbit(10)=2
20(10100),lowbit(20)=4
int lowbit(int n)
{return n&(-n);
}
例题:
801. 二进制中1的个数
给定一个长度为n的数列,请你求出数列中每个数的二进制表示中1的个数。
输入格式
第一行包含整数n。
第二行包含n个整数,表示整个数列。
输出格式
共一行,包含n个整数,其中的第 i 个数表示数列中的第 i 个数的二进制表示中1的个数。
数据范围
1≤n≤100000,
0≤数列中元素的值≤109
输入样例:
5
1 2 3 4 5
输出样例:
1 1 2 1 2
#include<bits/stdc++.h>
using namespace std;int lowbit(int x)
{return x&(-x);
}
int main()
{int n;cin>>n;while(n--){int x;cin>>x;int res=0;while(x) x-=lowbit(x),res++;//每次减去x的最后一位1cout<<res<<" "; }return 0;
}
借鉴:https://www.cnblogs.com/yrjns/p/11246163.html
今天是四年一遇的0229嘛🎀