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 相关文章推荐
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
Mar 29 PHP
PHP 创建文件(文件夹)以及目录操作代码
Mar 04 PHP
关于PHP的相似度计算函数:levenshtein的使用介绍
Apr 15 PHP
Codeigniter实现处理用户登录验证后的URL跳转
Jun 12 PHP
php获取百度收录、百度热词及百度快照的方法
Apr 02 PHP
PHP简单生成缩略图相册的方法
Jul 29 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
May 19 PHP
PHP实现冒泡排序的简单实例
May 26 PHP
PHP基于接口技术实现简单的多态应用完整实例
Apr 26 PHP
如何利用预加载优化Laravel Model查询详解
Aug 11 PHP
php无限级分类实现评论及回复功能
Feb 18 PHP
在laravel中实现将查询的对象转换为多维数组的函数
Oct 21 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实现字符串翻转的方法
2015/03/27 PHP
PHP Yii框架之表单验证规则大全
2015/11/16 PHP
php简单统计中文个数的方法
2016/09/30 PHP
PHP 图片处理
2020/09/16 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
2021/03/09 PHP
javascript之更有效率的字符串替换
2008/08/02 Javascript
jQuery 1.3 和 Validation 验证插件1.5.1
2009/07/09 Javascript
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
Eval and new funciton not the same thing
2012/12/27 Javascript
加载远程图片时,经常因为缓存而得不到更新的解决方法(分享)
2013/06/26 Javascript
jquery.ui.draggable中文文档(原文翻译)
2013/11/15 Javascript
引入JS文件IE6报语法错误或缺少对象问题的解决方法
2014/01/09 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
JavaScript编写简单的计算器
2015/11/25 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
2016/12/30 Javascript
Vue.js自定义指令的用法与实例解析
2017/01/18 Javascript
Vue2.0 组件传值通讯的示例代码
2017/08/01 Javascript
js使用xml数据载体实现城市省份二级联动效果
2017/11/08 Javascript
页面点击小红心js实现代码
2018/05/26 Javascript
jQuery实现获取及设置CSS样式操作详解
2018/09/05 jQuery
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
2018/10/25 Javascript
JavaScript JMap类定义与使用方法示例
2019/01/22 Javascript
python将txt文件读入为np.array的方法
2018/10/30 Python
pyside+pyqt实现鼠标右键菜单功能
2020/12/08 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
2019/07/04 Python
Python Selenium截图功能实现代码
2020/04/26 Python
工程部经理岗位职责
2013/12/08 职场文书
运动会邀请函范文
2014/02/06 职场文书
交通事故私了协议书
2014/04/16 职场文书
2014年幼儿园教研工作总结
2014/12/04 职场文书
工地材料员岗位职责
2015/04/11 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
电脑开机弹出documents文件夹怎么回事?弹出documents文件夹解决方法
2022/04/08 数码科技