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加密解密的代码
Oct 09 PHP
通过ODBC连接的SQL SERVER实例
Oct 09 PHP
使用php4加速网络传输
Oct 09 PHP
PHP 多维数组排序实现代码
Aug 05 PHP
CI操作cookie的方法分析(基于helper类库)
Mar 28 PHP
微信公众号开发之文本消息自动回复php代码
Aug 08 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
Mar 28 PHP
Symfony查询方法实例小结
Jun 28 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
Jul 27 PHP
PHP实现关键字搜索后描红功能示例
Jul 03 PHP
laravel 使用事件系统统计浏览量的实现
Oct 16 PHP
Laravel配合jwt使用的方法实例
Oct 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 水平的题目
2007/05/30 PHP
基于PHP异步执行的常用方式详解
2013/06/03 PHP
强制PHP命令行脚本单进程运行的方法
2014/04/15 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
PHP微信开发之文本自动回复
2016/06/23 PHP
Laravel 5.3 学习笔记之 错误&amp;日志
2016/08/28 PHP
THINKPHP3.2使用soap连接webservice的解决方法
2017/12/13 PHP
解决Laravel5.5下的toArray问题
2019/10/15 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
2019/10/30 PHP
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
JQuery扩展插件Validate 1 基本使用方法并打包下载
2011/09/05 Javascript
javascript ie6兼容position:fixed实现思路
2013/04/01 Javascript
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
jquery原创弹出层折叠效果点击折叠弹出一个层
2014/03/12 Javascript
js实现多选项切换导航菜单的方法
2015/02/06 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
2015/06/09 Javascript
实例讲解jquery中mouseleave和mouseout的区别
2016/02/17 Javascript
javascript构造函数以及原型对象的理解
2017/01/13 Javascript
浅谈ES6新增的数组方法和对象
2017/08/08 Javascript
anime.js 实现带有描边动画效果的复选框(推荐)
2017/12/24 Javascript
通过fastclick源码分析彻底解决tap“点透”
2017/12/24 Javascript
详解NodeJs项目 CentOs linux服务器线上部署
2019/09/16 NodeJs
在Python中操作字符串之replace()方法的使用
2015/05/19 Python
Python编程修改MP3文件名称的方法
2017/04/19 Python
详解用python写一个抽奖程序
2019/05/10 Python
java中的控制结构(if,循环)详解
2019/06/26 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
char型变量中能不能存贮一个中文汉字
2015/07/08 面试题
介绍一下XMLHttpRequest对象
2012/02/12 面试题
电子商务专业在校生实习自我鉴定
2013/09/29 职场文书
创建学习型党组织实施方案
2014/03/29 职场文书
理发店策划方案
2014/06/05 职场文书
乱丢垃圾袋检讨书
2014/10/08 职场文书
入队仪式主持词
2015/07/04 职场文书
html+css实现文字折叠特效实例
2021/06/02 HTML / CSS