位运算(二进制中1的个数)

位运算(二进制中1的个数),第1张

运算(二进制中1的个数

位运算最常用的两种 *** 作:

1.求整数n二进制表示中第k位(从个位开始算)数字是几:n>>k&1

先把第k位数字移到最后一位  n>>k再看一下个位是几    x&1

2.lowbit *** 作:

lowbit(x)作用是返回x的最后一位1。例如:x=1010,lowbit(x)=10;x=101000,lowbit(x)=1000。

应用是统计x里面1的个数

题目:

 代码:
#include
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的最后一位1
        cout< 

有关算法竞赛的题目会继续更新,欢迎评论交流!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5719066.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存