二进制表示中 1 的个数
题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
需要注意的是:
右移运算符是将一个二进制数按指定移动的位数向右移动。
移动过程中,正数最高位补0,负数最高位补1,无符号数最高位补0。
因此:
右移整数,遇到负数的测试序列会导致陷入死循环:
if ((n & 1) == 1) {count++;} n = n >> 1;
考虑左移 1,按位与测试序列,直至 1 从右端移出
while (flag != 0) {if ((n & flag) != 0) {count++;}flag = flag << 1; }
一种巧妙的解法,考虑 一个整数的二进制表示 减一 的操作,
一个二进制数1100,减去1后,得到1011,
减1的结果相当于把从最右边的一个1开始的所有位都取反。这时候再把原来的整数和减去1之后的结果做与运算,从原来整数最右边一个1那一位开始所有位都会变成0。如1100&1011=1000.
因此,把一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0., 0仍保持0,那么一个整数的二进制有多少个1,就可以进行多少次减 1 的操作
public int NumberOf1(int n) {
int count = 0;
while(n!= 0){
count++;
n = n & (n - 1);
}
return count;
}
二进制表示中 1 的个数相关推荐
- JAVA实现输入一个整数,输出该数二进制表示中1的个数(《剑指offer》)
题目: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 这个题目有个比较有意思并且被公认的解法,我就先贴答案吧: public class Solution {public int ...
- 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示
转自http://my.oschina.net/ithaibo/blog/142655 题目: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 题目引自http://ac.jobdu ...
- 算法--微软面试:整数的二进制表示中1的个数(Java实现)
Q题目 整数的二进制表示中1的个数 输入一个整数,求该整数的二进制表达中有多少个1. 例如,输入10,由于其二进制表示为1010,有两个1,因此输出2. 这是一道很基本的考查位运算的面试题. Answ ...
- 题库练习5(句子逆序、字符串排序、int型二进制表示中1的个数、购物单)
1. 句子逆序 将一个英文语句以单词为单位逆序排放.例如"I am a boy",逆序排放后为"boy a am I".所有单词之间用一个空格隔开,语句中除了英 ...
- 计算数值二进制表达式中1的个数
--------------------------------------------- -- 时间:2019-03-21 -- 创建人:Ruo_Xiao -- 邮箱:xclsoftware@163 ...
- BZOJ3209(n的二进制表示中1的个数的乘积)
题目:花神的数论题 设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数 N ,求 sum(1)至sum(N) 的乘积. #include <iostream> #inc ...
- 整数的二进制表示中 1 的个数
2019独角兽企业重金招聘Python工程师标准>>> 题目:整数的二进制表示中 1 的个数 要求: 输入一个整数,求该整数的二进制表达中有多少个 1. 例如输入 10,由于其二进制 ...
- 《剑指offer》-统计整数二进制表示中1的个数
题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 直观思路就是把二进制表示从右往左统计1的个数.直接想到移位操作来迭代处理.坑点在于负数的移位操作会填充1.有人贴出了逻辑移位 ...
- 转:对于一个字节(8bit)的变量,求其二进制表示中“1”的个数
转:http://toutiao.com/a4280977370/ [解法一] 可以举一个八位的二进制例子来进行分析.对于二进制操作,我们知道,除以一个 2,原来的数字将会减少一个0.如果除的过程中有 ...
最新文章
- 安卓系统底层C语言算法之测试参数是几个long型的算法
- 大学python用什么教材-清华大学出版社-图书详情-《Python大学教程》
- mvn 汇编_2020年积极向上的班级口号汇编71条
- [Leedcode][JAVA][第236题][二叉树的公共祖先][后序遍历][BFS]
- ubuntu创建php文件,ubuntu系统创建桌面快捷方式的方法
- Extjs中三种不同的数据提交方式
- FixedThreadPool 使用方法测试
- CSS边距---盒子模型
- 新浪下拉菜单(js原生版本)
- [转载] Python: ord()函数
- pso-svm 算法实现(1):python DEAP
- python的图导入origin_利用Origin软件做X射线倒易空间图(RSM)的办法
- 泊松分布以及相关分布的知识整理
- Bug系列路径规划算法原理介绍(三)——Tangent BUG算法
- 如何给 SAP UI5 SmartField 添加 Value Help 功能试读版
- 【逍遥模拟器】注册微信提示环境异常怎么解决?
- android 播放多个音频文件,android – 如何同时播放多个ogg或mp3 ..?
- python import logging
- C++ 背包问题——多重背包
- 关于免费发短信网站背后的猫腻
热门文章
- 施耐德APC 7921/7921B入门IP配置,(串口设置IP)
- 戴戴戴师兄《系统认识数据分析》——笔记整理0
- 深度强化学习中的泛化
- 经济周期的各个阶段——Business Cycle Phases
- UnicodeEncodeError: 'gbk' codec can't encode character '\U0001f914' in position ....
- Linux教程:基本命令学习
- 使用蒙特卡洛模拟进行var计算
- 浅析alsa声卡驱动snd_pcm_start函数-将音频数据真实的发送到外部音频接口硬件
- 3.Abp vNext 地磅无人值守 vue 前端搭建
- 源代码电影涉及的计算机思想,从“计算机-进程-线程”的角度理解电影《源代码》...