php实现统计二进制中1的个数算法示例


Posted in PHP onJanuary 23, 2018

本文实例讲述了php实现统计二进制中1的个数算法。分享给大家供大家参考,具体如下:

问题

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

解决思路

这是个位运算的题目。
解法一:可以通过按位与操作,通过将每一位和1与操作来求出1的个数。
解法二(最优解):一个巧妙的方法,一个不为0的二进制数,肯定至少有一位是1,当这个数减一的时候,它的最后一位1会变为0,后边的所有0会变为1。比如10100,减一之后会变为10011,然后用原数字10100和10011进行与操作之后,会得到10000,也就是通过这个操作,可以将一个1变为0,所以一个二进制数字能进行多少次这样的操作,就有多少个1.

实现代码

//解法一
function NumberOf1($n)
{
 $count = 0;
  $flag = 1;
  while ($flag != 0) {
   if (($n & $flag) != 0) {
    $count++;
   }
   $flag = $flag << 1;
  }
  return $count;
}
// 解法二
function NumberOf1($n)
{
 $count = 0;
 if($n < 0){ // 处理负数
   $n = $n&0x7FFFFFFF;
   ++$count;
 }
 while($n != 0){
  $count++;
  $n = $n & ($n-1);
 }
 return $count;
}
//测试
$num=45;
echo $num."的二进制是".decbin($num)."<br/>";
echo $num."共有".NumberOf1($num)."个1";

运行结果:

php实现统计二进制中1的个数算法示例

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
Php Mssql操作简单封装支持存储过程
Dec 11 PHP
利用Memcached在php下实现session机制 替换PHP的原生session支持
Aug 21 PHP
Discuz Uchome ajaxpost小技巧
Jan 04 PHP
PHP中实现中文字符进制转换原理分析
Dec 06 PHP
PHP反转字符串函数strrev()函数的用法
Feb 04 PHP
如何批量替换相对地址为绝对地址(利用bat批处理实现)
May 27 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
Jul 02 PHP
php使用curl发送json格式数据实例
Dec 17 PHP
PHP 函数call_user_func和call_user_func_array用法详解
Mar 02 PHP
php中数字、字符与对象判断函数用法实例
Nov 26 PHP
PHP实现执行外部程序的方法详解
Aug 17 PHP
PHP+MySQL实现消息队列的方法分析
May 09 PHP
基于php中echo用逗号和用点号的区别详解
Jan 23 #PHP
php数据结构之顺序链表与链式线性表示例
Jan 22 #PHP
通过源码解析Laravel的依赖注入
Jan 22 #PHP
phpstorm 正则匹配删除空行、注释行(替换注释行为空行)
Jan 21 #PHP
php语言注释,单行注释和多行注释
Jan 21 #PHP
PHP注释语法规范与命名规范详解篇
Jan 21 #PHP
php nginx 实时输出的简单实现方法
Jan 21 #PHP
You might like
DC最新动画电影:《战争之子》为何内容偏激,毁了一个不错的漫画
2020/04/09 欧美动漫
层叠菜单的动态生成
2006/10/09 PHP
如何使用PHP计算上一个月的今天
2013/05/23 PHP
php实现向javascript传递数组的方法
2015/07/27 PHP
yii2实现Ueditor百度编辑器的示例代码
2018/11/02 PHP
JS中动态添加事件(绑定事件)的代码
2011/01/09 Javascript
NodeJs中的非阻塞方法介绍
2012/06/05 NodeJs
js简单实现根据身份证号码识别性别年龄生日
2013/11/29 Javascript
利用js实现在浏览器状态栏显示访问者在本页停留的时间
2013/12/29 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
详解AngularJS中的http拦截
2016/02/09 Javascript
Bootstrap模仿起筷首页效果
2016/05/09 Javascript
js实现界面向原生界面发消息并跳转功能
2016/11/22 Javascript
Nodejs读取文件时相对路径的正确写法(使用fs模块)
2017/04/27 NodeJs
LayUi中接口传数据成功,表格不显示数据的解决方法
2018/08/19 Javascript
JavaScript链式调用实例浅析
2018/12/19 Javascript
详解vue 动态加载并注册组件且通过 render动态创建该组件
2019/05/30 Javascript
[46:14]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python字符串str和字节数组相互转化方法
2017/03/18 Python
python tkinter界面居中显示的方法
2018/10/11 Python
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
2018/10/14 Python
Django后端接收嵌套Json数据及解析详解
2019/07/17 Python
PYTHON实现SIGN签名的过程解析
2019/10/28 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
Theflamel意大利:女士奢华服装、鞋子和配件
2020/01/11 全球购物
土木工程应届生求职信
2013/10/31 职场文书
毕业生应聘幼儿园的自荐信
2013/11/20 职场文书
电视购物广告词
2014/03/19 职场文书
房屋产权共有协议书范本
2014/11/03 职场文书
第一节英语课开场白
2015/06/01 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书
只用50行Python代码爬取网络美女高清图片
2021/06/02 Python
CSS中Single Div 绘图技巧的实现
2021/06/18 HTML / CSS
Kubernetes控制节点的部署
2022/04/01 Servers
python数字图像处理之图像自动阈值分割示例
2022/06/28 Python