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 相关文章推荐
PHP4实际应用经验篇(2)
Oct 09 PHP
php递归创建和删除文件夹的代码小结
Apr 13 PHP
简单的php数据库操作类代码(增,删,改,查)
Apr 08 PHP
2014年10个最佳的PHP图像操作库
Jul 14 PHP
php猜单词游戏
Sep 29 PHP
thinkPHP下ueditor的使用方法详解
Dec 26 PHP
轻松掌握php设计模式之访问者模式
Sep 23 PHP
Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解
Oct 13 PHP
php之可变变量的实例详解
Sep 12 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
Feb 15 PHP
php的优点总结 php有哪些优点
Jul 19 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中通过curl smtp发送邮件
2012/06/05 PHP
Smarty模板学习笔记之Smarty简介
2014/05/20 PHP
PHP页面转UTF-8中文编码乱码的解决办法
2015/10/20 PHP
ThinkPHP3.1.2 使用cli命令行模式运行的方法
2020/04/14 PHP
23个超流行的jQuery相册插件整理分享
2011/04/25 Javascript
浅析js中取绝对值的2种方法
2013/07/09 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
2016/05/11 Javascript
浅谈$('div a') 与$('div&gt;a')的区别
2016/07/18 Javascript
JQuery 设置checkbox值二次无效的解决方法
2016/07/22 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
2016/10/28 Javascript
js仿小米手机上下滑动效果
2017/02/05 Javascript
深入探究AngularJs之$scope对象(作用域)
2017/07/20 Javascript
angularJs中ng-model-options设置数据同步的方法
2018/09/30 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
2019/01/08 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
react MPA 多页配置详解
2019/10/18 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
2019/10/23 Javascript
JS实现动态星空背景效果
2019/11/01 Javascript
Vue基础配置讲解
2019/11/29 Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
2019/12/09 Javascript
JavaScript碰撞检测原理及其实现代码
2020/03/12 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
快速了解Vue父子组件传值以及父调子方法、子调父方法
2020/07/15 Javascript
Python 数据结构之旋转链表
2017/02/25 Python
使用python3构建文件传输的方法
2019/02/13 Python
Python使用POP3和SMTP协议收发邮件的示例代码
2019/04/16 Python
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
Crocs卡骆驰洞洞鞋日本官方网站:Crocs日本
2016/08/25 全球购物
2015财务年度工作总结范文
2015/05/04 职场文书
博士论文答辩开场白
2015/06/01 职场文书
2015中学政教处工作总结
2015/07/22 职场文书
学雷锋广播稿大全
2015/08/19 职场文书
2019暑假学生安全口号
2019/06/27 职场文书
30岁前绝不能错过的10本书
2019/08/08 职场文书
Python机器学习之逻辑回归
2021/05/11 Python
详解Go与PHP的语法对比
2021/05/29 PHP