JZ15 二进制中1的个数

2023-11-13

输入一个整数 n ,输出该数32位二进制表示中1的个数。其中负数用补码表示。

数据范围:- 2^{31} <= n <= 2^{31}-1−231<=n<=231−1

即范围为:-2147483648<= n <= 2147483647−2147483648<=n<=2147483647

方法一:

int NumberOf1(int n ) {

    int mask = 1, i = 0, num = 0;

    for(i = 0; i<32;i++){

        if(mask & n){

            num++;

        }

        mask <<= 1;

    }

    return num;

}

        将n右移是不行的(Java语言可以进行逻辑右移),因为算数右移如果是负值,则进行补位操作,最左侧一直是一。因此考虑将掩码左移。

方法二:

int NumberOf1(int n ) {

    int num = 0;

    while(n){

        n = n & (n-1);

        num++;

    }

    return num;

}

          非常巧妙的一种算法,规律为:一个二进制数减1,在左侧第一个1之前,所有位数发生反转,即1->0, 0->1。这样进行&运算就可以消掉最右侧的一个1,当n==0时,结束。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JZ15 二进制中1的个数 的相关文章

随机推荐

  • 272. 最长公共上升子序列(lcis,dp)

    首先是lis的状态划分图 然后是lcs 结合lis和lcs两种dp问题的分析方法 我们就可以得出lcis的状态分析图 1 首先上升子序列的分析方法 以某个数字为结尾 2 其次公共子序列的分析方法 有4种状态 00 01 10 11 双关键字
  • 128、函数接口类---Consumer

    一 概念 java util function Consumer
  • Git常用命令fetch和pull和push

    Git常用命令pull和push 1 fetch 从远程获取代码库 会将所有远程分支都拉到本地 并不会合并代码 git fetch 下载远程仓库的所有变动 git fetch remote git fetch origin 指定拉取远程re
  • 百度App Objective-C/Swift 组件化混编之路(二)- 工程化

    作者丨张渝 郭金 来源丨百度App技术 前文 百度App Objective C Swift 组件化混编之路 已经介绍了百度App 引入 Swift 的影响面评估以及落地的实施步骤 本文主要以依赖管理工具为支撑 介绍百度App 如何实现组件
  • Socket -- udp

    接收者 完成System out println UDPProvider Started 作为接收者 指定一个端口用于数据接收 DatagramSocket ds new DatagramSocket 20000 构建接收实体 final
  • 网吧管理系统mysql_网吧管理系统数据库课程设计.doc

    网吧管理系统数据库课程设计 doc 大型数据库课程设计 设计报告 题 目 网吧管理系统数据库 学 号 学生姓名 指导教师 提交时间 2013 11 23 第1章 需求分析 1 1 需求分析任务 1 2 需求分析过程 1 3 数据字典和流程图
  • Java面向对象(1) —— 封装

    目录 一 封装的概念 二 类的封装以及使用 三 访问修饰符 四 属性封装的实现 五 方法封装的实现 六 UML类图 七 类的构造方法与可重载 八 this关键字 九 static关键字 十 方法重载 overload 十一 包 packag
  • unity制作和输出摄像机环绕动画

    1 需要用到两个官方插件Cinemachine以及Recorder 2 第一步设置摄像机 创建一个虚拟相机CM vcam1 这时主摄像机会自动加载Cinemachinebrain组件 并指定CM1 3 设置CM1的参数 创建空物体命名为ta
  • 4 朴素贝叶斯法

    文章目录 4 朴素贝叶斯法 4 1 朴素贝叶斯的学习与分类 4 1 1 基本方法 4 1 2 后验概率最大化的含义 4 2 朴素贝叶斯法的参数估计 4 2 1 极大似然估计 4 2 2 学习与分类算法 4 2 3 贝叶斯估计 4 3 代码
  • 前端面试题总结----

    1 基础 1 1 性能优化 图片压缩 小图使用base64 数据缓存 避免重复请求 合理使用标签 避免创建无用的DOM结构 减少DOM操作 减少重排 尽可能重绘 避免空的src或者href值 启用 gzip 压缩 css 放顶部 js 放底
  • LTE中扫频及小区搜索

    2 1 扫频 2 1 1 概述 在指定频点 小区或者候补频点 小区搜索失败或者这些信息不存在时 会进行全频 段扫描 搜索 UE 能力支持频段范围内存在的所有小区 物理层会将 RRC 下发的扫描 频段分成单位 100KHz 的小频段进行扫描
  • 使用Eclipse创建一个简单的servlet项目

    一 通过File gt new gt others找到Dynamic Web project 创建一个动态的web项目 二 配置项目 再找个位置配置你下载的Tomcat的版本 点击next Tomcat存放的位置 本地JRE 点击finis
  • 解决数据库连接时2059 - Authentication plugin 'caching_sha2_password' cannot be loaded报错

    问题如下 在Navicat里面连接数据库时直接就出现报错2059 Authentication plugin caching sha2 password cannot be loaded 从错误信息可知caching sha2 passwo
  • 隐藏手机下方的底部导航条NavigationBar

    需知 在现在的Android项目中 为了布局适配 也为了界面看起来更加简洁大气 App保留了头部标题栏 但是下方的NavigationBar却有点多余 不过当然 因为手机按键很少的缘故 若是没有NavigationBar的话 恐怕就连退出都
  • WF项目问题总结

    1 后台接口对接时 参数传递方式 urlcode 是一种编码方式 就是把http请求串的url 进行urlcode的编码 让httpserver 可以识别 不至于http的client server 之前出现乱码或者误解 例如 Conten
  • 【LeetCode每日一题】5. 最长回文子串

    题目 给你一个字符串 s 找到 s 中最长的回文子串 示例 1 输入 s babad 输出 bab 解释 aba 同样是符合题意的答案 示例 2 示例 2 输入 s cbbd 输出 bb 示例 3 输入 s a 输出 a 示例 4 输入 s
  • Python零基础学习

    大家好 我是王某人 一 写在前面 前几天在Python技术交流群有个小伙伴分享一个使用Python画出太极阴阳八卦图的代码 这里拿出来给大家分享下 一起学习下 不过这里他的代码是有点问题的 不过不慌 下面给出了解答 二 解决过程 下面给出了
  • SSL/TLS协议交互流程分析

    本文参考 SSL TLS协议运行机制的概述 tls运行机制 这里不细说 建议细看 HTTPS与TLS The Transport Layer Security TLS Protocol v1 2 ssl tls基础介绍 SSL Secure
  • 2021PMP冲刺题,敏捷题目摘录

    1 单选 在每日站会期间 开发人员提出了一个影响产品质量并需要解决方案的问题 项目经理应该做什么 During the daily stand up the developer raises a problem that affects p
  • JZ15 二进制中1的个数

    输入一个整数 n 输出该数32位二进制表示中1的个数 其中负数用补码表示 数据范围 2 31 lt n lt 2 31 1 231 lt n lt 231 1 即范围为 2147483648 lt n lt 2147483647 21474