人因梦想而伟大,又因坚持梦想而成长|

TomLove

园龄:1年11个月粉丝:1关注:1

位运算

位运算

lowbit(x):返回x二进制的最后一位1

lowbit的具体实现代码
x&-x;
//(-x=(~x)+1) -x等于取反x加1;
x = 1010;
lowbit(x) = 10;
x = 101000;
lowbit(x) = 1000;

可以用于求一个数的二进制中1的个数

example:

给定一个长度为 n 的数列,请你求出数列中每个数的二进制表示中 11 的个数。

输入格式

第一行包含整数 n。

第二行包含 n 个整数,表示整个数列。

输出格式

共一行,包含 n个整数,其中的第 i 个数表示数列中的第 i 个数的二进制表示中 1 的个数。

数据范围

1≤n≤100000,
0≤数列中元素的值≤10^9

代码实现

#include<iostream>
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++;
}
cout<<res<<" ";
}
return 0;
}

本文作者:TomLove

本文链接:https://www.cnblogs.com/tomlove/p/17640709.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   TomLove  阅读(16)  评论(5编辑  收藏  举报
   
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起