lowbit运算
Posted xwl3109377858
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lowbit运算相关的知识,希望对你有一定的参考价值。
lowbit(n)定义为非负整数n,在二进制表示下“最低位的1及其后面所有的0” 构成的数值。
例如 n=10 二进制表示为(1010),则 lowbit (n) = 2 (10),
当我们对计算出的 lowbit(n) 进行取log2操作 后,我们可以得到“n的二进制表示下最低位1的位置”,
为了 得到n的二进制表示下所有1的位置 ,我们需要不断的把 n 赋值为 n-lowbit(n) ,直到n=0结束 。
具体见代码 ,
1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<cmath>
5 #include<algorithm>
6 #include<map>
7 #include<set>
8 #include<vector>
9 #include<queue>
10 #include<stack>
11 #include<list>
12 #include<unordered_map>
13 using namespace std;
14 #define ll long long
15 const int mod=1e9+7;
16 const int inf=1e9+7;
17
18 //const int maxn=
19
20 int lowbit(int n)
21
22 return n & (-n);
23
24
25 int main()
26
27 ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
28 int num;
29 while(cin>>num)
30
31 int temp=num;
32 temp=num;
33 while(temp)
34
35 int x=lowbit(temp);
36 temp-=x;
37 x=log2(x);
38 cout<<x<<endl;
39
40
41 return 0;
42
以上是关于lowbit运算的主要内容,如果未能解决你的问题,请参考以下文章
位运算AcWing 801. 二进制中1的个数(lowbit)