剑指offer面试题10 二进制中1的个数

考察点

位运算

知识点

位运算针对二进制位进行运算,包括(&)与运算,(|)或运算,(^)异或运算,(~)取反,(<<)左
移位,(>>)右移位,(>>>)无符号右移运算
与运算:0&0=0,0&1=0,1&0=0,1&1=1
或运算:0|0=0,0|1=1,1|0=1,1|1=1
异或:0^0=0,0^1=1,1^0=0,1^1=0
左移:m<<n表示m左移n位,最右边补0,左移1位相当于乘以2
右移:m>>n表示m右移n位,最左边补符号位,右移1位相当于除以2
无符号右移:m>>>n表示m无符号右移n位,最左边补0,这意味着一个负数在无符号右移后可
能会变成正数
注意数字的位运算是每一位二进制位位运算的结果
我们知道任何数据或者代码在计算机中都是二进制的存储方式,
因此位运算可以极大的提高计算速度。我们常见的数字的表示
方式其实都是10进制,比如12345这种

题目

分析
要求二进制中1的个数,这个时候思维一定要往位运算上靠,如果二进制位与数字1做与运算还是1的话那就肯定能说明这个二进制位是1,我们遍历这个数字的二进制序列就能够统计出1的个数了。有俩种很直观的思路,第一种思路不断右移该数字并且让该数字与1做与运算直到该数字为0为止,右移最右边不断补0因此这个数字最终肯定会变成0,如果用普通右移的话这个思路的前提是这个数字一定不能是负数,如果是负数的话要陷入死循坏了,当然用无符号数右移也是可以满足诉求的。还有种思路是左移数字1,这样从最右边开始向左遍历二进制序列,判断每个二进制位是否是1,直到数字1变成0为止。当然对于二进制位来说判断是1的条件是俩个二进制位与运算是1就可以,但是对于一个数字来说判断条件则是俩个数字与运算结果大于0

public class Ten {public static void main (String[] args) {System.out.println(count(9));}public static int count(int num) {int flag = 1;int cnt = 0;while (flag!=0) {int d = flag & num;if ((flag & num) > 0) {cnt ++;}flag <<= 1;}return cnt;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/659060.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

closest的用法

1. closest的概念 Element.closest() 是一个DOM&#xff08;文档对象模型&#xff09;方法&#xff0c;用于从当前元素开始&#xff0c;沿着DOM树向上遍历&#xff0c;直到找到匹配指定选择器的第一个元素。如果没有找到匹配的元素&#xff0c;则返回 null。 2. closest的使用…

【vue2】路由之 Vue Router

文章目录 一、安装二、基础使用1、简单的示例2、动态路由2.1 定义动态路径参数2.2 获取动态路径的参数2.3 捕获所有路由 3、嵌套路由4、编程式的导航4.1 router.push4.2 router.replace4.3 router.go(n) 5、命名路由6、重定向 三、进阶1、导航守卫1.1 全局前置守卫1.2 全局后置…

模板笔记 ST表 区间选数k

本题链接&#xff1a;用户登录 题目&#xff1a; 样例&#xff1a; 输入 5 3 1 1 2 2 3 1 2 3 3 1 5 输出 4 6 思路&#xff1a; . 根据题意&#xff0c;给出数组&#xff0c;以及多个区间&#xff0c;问这些区间中&#xff0c;最小值之和 和 最大值之和&#xff0c;…

居然可以在大肠杆菌上运行Doom游戏

MIT的学生们成功地在人体细胞&#xff08;大肠杆菌&#xff09;上……运行了Doom游戏。看到第一反应是科幻小说《雪崩》&#xff01;

A ConvNet for the 2020s

前言 论文名称&#xff1a;A ConvNet for the 2020s  发表时间&#xff1a;CVPR2022  code链接&#xff1a; 代码  作者及组织&#xff1a; Zhuang Liu&#xff0c;Hanzi Mao来自Meta和UC Berkeley。 一句话总结&#xff1a;仿照swin-T思想&#xff0c;重新设计ResNet结构&a…

【Python】使用aiohttp编写客户端

对比aiohttp和requests aiohttp 和 requests 是两个常用的 Python HTTP 库&#xff0c;它们有一些明显的区别&#xff0c;主要涉及到同步与异步、性能、用法和适用场景等方面。aiohttp不仅能编写http客户端代码&#xff0c;还可以用于开发服务端。以下内容对比aiohttp和reques…

嵌入式学习记录14

一&#xff1a;string.h 1.strncpy char *strncpy(char *dest, const char *src, size_t n) 定义一个 char * 类型的函数&#xff1b;其中dest为复制到这个地址&#xff0c;src为要复制的目标&#xff1b;n为复制src的前n 个&#xff1b; n < strlen(src) 只拷贝…

spark-cannot resolve overloaded method

使用split方法&#xff0c;出现错误&#xff1a;cannot resolve overloaded method 解决方法:那个regex应该是自动生成&#xff0c;所以split括号中输入空引号即可。 入门学习人的愚笨&#xff0c;也要继续坚持&#xff0c;加油&#xff01;

解决npm安装phantomjs失败

失败信息 Progress: resolved 102, reused 102, downloaded 0, added 0, done .pnpm/phantomjs2.1.7/node_modules/phantomjs: Running install script, failed in 21.3s .../node_modules/phantomjs install$ node install.js │ PhantomJS not found on PATH │ Downloading…

消息中间件之RocketMQ源码分析(三)

RocketMQ中的Consumer启动流程 RocketMQ客户端中有两个独立的消费者实现类分别为DefaultMQPullConsumer和DefaultMQPushConsumer&#xff0c; DefaultMQPullConsumer DefaultMQPullConsumer,该消费者使用时需要用户主动从Broker中Pull消息和消费消息&#xff0c;提交消费位点…

vue-router 实现页面路由

vue-router介绍 vue 的官方路由组件 功能包括 嵌套路由映射动态路由选择模块化、基于组件的路由配置路由参数、查询、通配符HTML5 的 history 模式 和 hash 模式 vue-router使用 结合 tabs 组件&#xff0c;实现页面路由 安装 vant-ui 实现底部导航栏 Tabbar-CSDN博客 重点…

图的学习

图的基本概念和术语 图的定义&#xff1a;图是由顶点的有穷非空集合和顶点之间的边的集合组成的&#xff0c;G表示&#xff0c;V是图G中顶点的集合&#xff0c;E是图G中边的集合 无向图&#xff1a;任意两点的边都是无向边组成的图&#xff08;无向边&#xff1a;&#xff08…

R高级绘图 | P1 | 带边缘分布散点图 | 代码注释 + 结果解读

新系列 —— R高级绘图&#xff0c;准备整理所有曾经绘制过的图图和未来需要的图图们的代码&#xff01;预计这个系列会囊括所有常见图形&#xff0c;只提供高级绘图代码&#xff0c;基础绘图主要在 R语言绘图 系列中进行介绍&#xff0c;这个系列咱们主打&#xff1a;需要XX图…

MySQL 常用函数学习总结

1、数值函数 ➢ 数学计算 ○ ABS(x) 返回x的绝对值 SELECT ABS(-2);○ EXP(x) 返回 e 的 x 次方 SELECT EXP(2); ○ LN 返回数字的自然对数 SELECT LN(2); ○ OG(x) 返回自然对数(以 e 为底的对数) SELECT LOG(20.085536923188); ○ POW(x,y)/POWER(x,y) 返回 x 的 y …

Redis拒绝连接的原因与解决方式

Redis拒绝连接的原因与解决方式 在某些情况下&#xff0c;当尝试从外部计算机连接到运行在保护模式下的Redis服务器时&#xff0c;您可能会遇到如下的错误信息&#xff1a; Caused by: org.redisson.client.RedisException: DENIED Redis is running in protected mode becau…

【Web前端实操21】商城官网_白色导航

今日份实现白色导航栏部分&#xff0c;也就是第三部分&#xff0c;效果如图中划线所示&#xff1a; 本次实现代码如之前的全局样式不再赘述&#xff0c;如有需要可以去我博客的Web前端实操19或者20自行查看。 本次主要更新mi.css和index.htm。 实现导航栏所需要的CSS样…

2015年苏州大学837复试机试C/C++

2015年苏州大学复试机试 第一题 题目 有36块砖&#xff0c;现在有36个人&#xff0c;男人能搬4块&#xff0c;女人能搬3块&#xff0c;小孩子两人搬一块&#xff0c;求一次搬完这些砖要男人&#xff0c;女人&#xff0c;小孩多少人&#xff1f; 代码 #include <iostrea…

仰暮计划|“那时候在生产队下面,集体干活,吃大锅饭,由队里分粮食,吃不饱饭是常事,队里分的粮食就那么点,想要吃饱真的太难了”

希望未来的中国越来越好&#xff0c;大家的生活也越来越好 老人是1955年在河南省洛阳市洛宁县的一个小山村里出生的&#xff0c;前半辈子为了生活&#xff0c;为了孩子而打拼&#xff0c;虽然经历了不少的苦难&#xff0c;但后半辈子也算是苦尽甘来&#xff0c;生活美满。现在就…

LeetCode-1483. 树节点的第 K 个祖先

原题链接&#xff1a;LeetCode-1483. 树节点的第 K 个祖先 题面 给你一棵树&#xff0c;树上有 n 个节点&#xff0c;按从 0 到 n-1 编号。树以父节点数组的形式给出&#xff0c;其中 parent[i] 是节点 i 的父节点。树的根节点是编号为 0 的节点。 树节点的第 k 个祖先节点是从…

《Is dataset condensation a silver bullet for healthcare data sharing?》

一篇数据浓缩在医疗数据集应用中的论文。 其实就是在医疗数据集上使用了data condensation的方法&#xff0c;这里使用了DM的方式&#xff0c;并且新增了浓缩时候使用不同的网络。 1. 方法 数据浓缩DC的目的是&#xff1a; E x ∼ P D [ L ( φ θ O ( x ) , y ) ] ≃ E x ∼…