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调用Twitter的RSS的实现代码
Mar 10 PHP
php 错误处理经验分享
Oct 11 PHP
PHP中去除换行解决办法小结(PHP_EOL)
Nov 27 PHP
php中如何判断一个网页请求是ajax请求还是普通请求
Aug 10 PHP
PHP+Mysql基于事务处理实现转账功能的方法
Jul 08 PHP
Redis使用Eval多个键值自增的操作实例
Nov 04 PHP
PHP脚本自动识别验证码查询汽车违章
Dec 20 PHP
php常用正则函数实例小结
Dec 29 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
Apr 18 PHP
PHP弱类型语言中类型判断操作实例详解
Aug 10 PHP
PHP设计模式之观察者模式定义与用法示例
Aug 04 PHP
详解PHP服务器如何在有限的资源里最大提升并发能力
May 25 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
php下连接mssql2005的代码
2011/01/17 PHP
php使用number_format函数截取小数的方法分析
2016/05/27 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
php操作access数据库的方法详解
2017/02/22 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
PHP 文件上传限制问题
2019/09/01 PHP
日期 时间js控件
2009/05/07 Javascript
javascript 动态加载 css 方法总结
2009/07/11 Javascript
javascript实现的在当前窗口中漂浮框的代码
2010/03/15 Javascript
js跨域问题之跨域iframe自适应大小实现代码
2010/07/17 Javascript
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
JavaScript的漂亮的代码片段
2013/06/05 Javascript
JS去除字符串两端空格的简单实例
2013/12/27 Javascript
可恶的ie8提示缺少id未定义
2014/03/20 Javascript
使用jQueryMobile实现滑动翻页效果的方法
2015/02/04 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
AngularJS 执行流程详细介绍
2016/08/18 Javascript
jQuery事件对象的属性和方法详解
2017/09/09 jQuery
vue框架下部署上线后刷新报404问题的解决方案(推荐)
2019/04/03 Javascript
基于ajax及jQuery实现局部刷新过程解析
2020/09/12 jQuery
在树莓派2或树莓派B+上安装Python和OpenCV的教程
2015/03/30 Python
Python中subprocess模块用法实例详解
2015/05/20 Python
《与孩子一起学编程》python自测题
2018/05/27 Python
python如何实现数据的线性拟合
2019/07/19 Python
关于numpy中eye和identity的区别详解
2019/11/29 Python
Python中Pyspider爬虫框架的基本使用详解
2021/01/27 Python
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
使用postMessage让 iframe自适应高度的方法示例
2019/10/08 HTML / CSS
幼师自荐信范文
2013/10/06 职场文书
建筑工程技术应届生求职信
2013/11/17 职场文书
浙江文明网签名寄语
2014/01/18 职场文书
关于母亲节的感言
2014/02/04 职场文书
超市中秋节活动方案
2014/02/12 职场文书
python中Matplotlib绘制直线的实例代码
2021/07/04 Python
Python之基础函数案例详解
2021/08/30 Python