统计二进制中1的个数(四种方案)
方案一:(只适合计算正数)
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num = 10; //10的二进制数为1010
int count = 0;
while (num)
{
if (num % 2 == 1) //从最高位开始除,余数为1则为1,余数为2则为0
{
count++; //余数为1时计数加1
}
num = num / 2; //除以2相当于右移一位,即丢掉计数过的
}
printf("%d\n", count);
system("pause");
return 0;
}
方案二:(正负数皆可)
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num = 10;
int count = 0;
while (num)
{
if ((num&1) == 1) //&按位与:有0则0,双1则1。即从最高位开始每位数字按位与1
{
count++;
}
num = num >> 1; //相当于除以2
}
printf("%d\n", count);
system("pause");
return 0;
}
方案三:(正负数皆可)
#include<stdio.h>
#include<stdlib.h>
int main()
{
unsigned int num = -1; //-1的二进制数为11111111 11111111 11111111 11111111
int count = 0;
while (num)
{
if ((num&1) == 1)
{
count++;
}
num = num >> 1;
}
printf("%d\n", count);
system("pause");
return 0;
}
方案四:(正负数皆可)
#include<stdio.h>
#include<stdlib.h>
int main()
{
int num = -1;
int count = 0;
while (num)
{
count++;
num = num&(num - 1);
}
printf("%d\n", count);
system("pause");
return 0;
}
结果:
num=10 //10的二进制数为1010
num=-1 //-1的二进制数为11111111 11111111 11111111 11111111
转载于:https://blog.51cto.com/10921020/1737138
统计二进制中1的个数(四种方案)相关推荐
- php统计变量的位数,php实现统计二进制中1的个数算法示例
本文实例讲述了php实现统计二进制中1的个数算法.分享给大家供大家参考,具体如下: 问题 输入一个十进制整数,输出该数二进制表示中1的个数.其中负数用补码表示. 解决思路 这是个位运算的题目. 解法一 ...
- #1-1 统计二进制中1的个数
统计二进制中1的个数 前言 输入 输出 样例输入 样例输出 源代码 关于这题 前言 程序小白-萧白 今天开始努力学习!!! 输入 输出 样例输入 样例输出 源代码 #include <stdio ...
- (转)快速统计二进制中1的个数
大牛博客插眼:https://blog.csdn.net/u013243347/article/details/52220551 证明在大牛的博客里,直接挂代码吧: 时间复杂度从logn下降到了O(二 ...
- 【剑指offer15.二进制中1的个数】——位操作(左移右移等)
目录 二进制的表示 二进制的位操作 应用: 剑指offer15.统计二进制中1的个数(多种方法,位右移操作.与操作等) 转自:https://www.jianshu.com/p/3a31065a8e5 ...
- 每列大于0的个数_二进制中1的个数(剑指offer第十四天)
二进制中1的个数 题目:请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数.例如,把 9 表示成二进制是 1001,有 2 位是 1.因此,如果输入 9,则该函数输出 2. 示例 1: 输 ...
- 第2章 数字之魅——求二进制中1的个数
求二进制中1的个数 问题描述 对于一个字节(8bit)的变量,求其二进制表示中"1"的个数,要求算法的执行效率尽可能地高. [解法一] 可以举一个八位的二进制例子来进行分析.对于二 ...
- 求二进制中1的个数(编程之美2.1)
行文脉络 解法一--除法 解法二--移位 解法三--高效移位 解法四--查表 扩展问题--异或后转化为该问题 对于一个字节(8bit)的变量,求其二进制"1"的个数.例如6(二进制 ...
- 剑指offer:面试题15. 二进制中1的个数
题目:二进制中1的个数 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数.例如,把 9 表示成二进制是 1001,有 2 位是 1.因此,如果输入 9,则该函数输出 2. 示例 1: 输 ...
- 剑指Offer #11 二进制中1的个数(想不到的骚操作)
题目来源:牛客网-剑指Offer专题 题目地址:二进制中1的个数 题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 题目解析 对于这种涉及位运算的题目,我们首先要了解基本的位 ...
最新文章
- 【转】vfork 和 fork的区别
- 《Note --- Unreal 4 --- Sample analyze --- StrategyGame(continue...)》
- Hollowjars,部署扫描程序以及Wildfly群体为何很棒
- 2014年ENVI/IDL遥感应用与开发培训班-11月重庆站 開始报名了
- 清华大学 现代软件工程 - 实战经验分享
- oracle sum函数返回类型,Oracle / PLSQL SUM函数
- 融会贯通——最常用的面向对象设计原则“合成复用原则”
- celebs名人写真图片数据采集,先下载100个G再说
- java biginteger string_String到BigInteger java
- rds支持mysql自带函数吗_MySQL自定义函数(CREATE FUNCTION)
- 慕课网 机器学习任务 笔记
- 计算机组成原理微指令cpth,计算机组成原理(西安理工大学)实验二 CPTH模型机综合实验——微控制器实验.doc...
- 玻纤效应差分信号影响及处理方法,使用sigrity建模玻纤效应仿真
- FITC-PEG-Pyrene,荧光素聚乙二醇芘丁酸,Pyrene-PEG-Fluorescent
- Java 删除session实现退出登录
- Ant design vue pro 添加多页签
- 线性回归使用的基本条件
- 2021高考热度最高专业,大数据分析告诉你
- Python函数参数之*与**用法详解
- 8、Horizon 事件数据库安装配置