首页 > 其他分享 >【位运算】统计二进制中1的个数

【位运算】统计二进制中1的个数

时间:2024-12-19 13:32:21浏览次数:8  
标签:cout 二进制 namespace 个数 int ans 运算

方法一:利用按位与运算(&)结合移位操作来逐位判断二进制数中的每一位是否为 1。

#include<iostream>

using namespace std;
int n,ans;
int main(){
    cin>>n;
    while(n){
        if(n&1){
            ans++;
        }
        n>>=1;
    }
    cout<<ans<<endl;
    return 0;
}

方法二:高效的位运算技巧(Brian Kernighan 算法)

这个算法的思路是利用了一个特性:对于一个整数nn & (n - 1)操作会将n的二进制表示中最右边的 1 变为 0。

#include<iostream>

using namespace std;
int n,ans;
int main(){
    cin>>n;
    while(n){
        n&=(n-1);
        ans++;
    }
    cout<<ans<<endl;
    return 0;
}

标签:cout,二进制,namespace,个数,int,ans,运算
From: https://blog.csdn.net/creator_Li/article/details/144583525

相关文章

  • C#知识整理-运算符
    运算符C#提供了许多运算符。其中许多都受到内置类型的支持,可用于对这些类型的值执行基本操作。这些运算符包括以下组:算术运算符比较运算符布尔逻辑运算符位运算符和移位运算符相等运算符 算数运算符以下运算符堆数值类型进行算数运算:++(增量)、--(减量)、+(加)、-(减)、......
  • java位运算实现加减乘除
    纯用位运算实现加减乘除,涉及一些基础的位运算知识,代码注释里都已经写清楚。publicclassBitOperationCalculate{publicintadd(inta,intb){//a+b=(a^b)+(a&b)<<1=a`+b`=(a`^b`)+(a`&b`)<<1直到b`为0,此时的a就是结果//a`=a^b(a异或b)b`=(a&b)<......
  • Gtirb:一款针对二进制代码与数据的分析转换工具
    关于GtirbGtirb是一款针对二进制代码与数据的分析转换工具,同时也是一款机器代码分析和重写数据结构的工具。它旨在促进执行二进制反汇编、分析和转换,并且支持以良好格式输出程序之间的二进制IR通信。Gtirb以LLVM-IR为模型,旨在提供类似的功能,即鼓励工具之间的通信和互操作性。......
  • 8、C语言-运算符
    数字的相加注意:数据类型不一样的不能直接相加、需要先转成一样的数据类型隐式转换把一个取值范围小的、自动转成取值范围大的short、char类型的数据在计算的时候,先提升位为int,再进行运算强制转换将数据类型大的转为小的格式:目标数据类型变量名=(目标数据......
  • C语言关于return在循环语句中的使用(求一个数是否为素数的过程中的思考)
    intjk(inta)//定义一个jk函数判断a是否是素数,是返回1,不是则返回0.{ inti;if(a<2){return0;} elseif(a==2) { return1; } else { for(i=2;i<=a-1;i++) { if(a%i==0) { return0; } } return1; } }intmain(......
  • 最小(大)栈、求最大公约数、判断一个数是否为2的整数次幂
    2.最小(大)栈问题题目实现一个栈,该栈带有出栈(pop),入栈(push),取最小元素(getMin)3个方法。且要保证这3个方法的时间复杂度都是O(1)。思路1.设原有的栈为main栈,此时创建一个额外的min栈,用于辅助main栈。2.当第1个元素,进main栈时,让该元素,也进入min栈,这个唯一的元素也是main栈的......
  • 如何检测一个数是否为无穷大?
    在前端开发中,JavaScript是最常用的编程语言。在JavaScript中,你可以使用Infinity对象和isFinite()函数来检测一个数是否为无穷大。以下是一个简单的示例:functionisInfinite(number){returnnumber===Infinity||number===-Infinity;}console.log(isInfinit......
  • 二进制中1的个数(C语言)
    写一个函数返回参数二进制中1的个数(三种方法)主函数main的代码intmain(){ intnum=0; scanf("%d",&num); //接收1的个数 intn=count_num_of_1(num); printf("%d\n",n); return0;}方法一intcount_num_of_1(unsignedintn){ intcount=0; while......
  • AlmaLinux 10.0 Beta “Purple Lion” - RHEL 二进制兼容免费发行版
    AlmaLinux10.0Beta“PurpleLion”-RHEL二进制兼容免费发行版由社区提供的免费Linux操作系统,RHEL二进制兼容发行版请访问原文链接:https://sysin.org/blog/almalinux-10/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org由社区提供的免费Linux操作系统一......
  • OPA828IDR OPA2828 数据手册一款低失调电压、低温漂、低噪声输入运算放大器芯片
    OPA828和OPA2828(OPAx828)JFET输入运算放大器是OPA627和OPA827的下一代产品,兼具高速度、高直流精度和高交流性能。这些运算放大器可提供低失调电压、低温漂、低偏置电流和低噪声,噪声仅为60nVRMS0.1Hz至10Hz。OPAx828在±4V至±18V的宽电源电压范围内工作,每通道电......