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运行时强制显示出错信息的代码
Apr 20 PHP
使用PHP强制下载PDF文件示例
Jan 17 PHP
PHP判断变量是否为0的方法
Feb 08 PHP
php环境套包 dedeampz 伪静态设置示例
Mar 26 PHP
PHP面向对象教程之自定义类
Jun 10 PHP
PHP邮件发送类PHPMailer用法实例详解
Sep 22 PHP
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
Dec 17 PHP
PHP中foreach()用法汇总
Jul 02 PHP
php防止网站被攻击的应急代码
Oct 21 PHP
PHP请求Socket接口测试实例
Aug 12 PHP
PHP常见加密函数用法示例【crypt与md5】
Jan 27 PHP
浅谈php://filter的妙用
Mar 05 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
PHPUnit安装及使用示例
2014/10/29 PHP
PHP的mysqli_thread_id()函数讲解
2019/01/24 PHP
Mozilla 表达式 __noSuchMethod__
2009/04/05 Javascript
一个选择最快的服务器转向代码
2009/04/27 Javascript
JavaScript 打地鼠游戏代码说明
2010/10/12 Javascript
自写简单JS判断是否已经弹出页面
2010/10/20 Javascript
一个网页标题title的闪动提示效果实现思路
2014/03/22 Javascript
Egret引擎开发指南之发布项目
2014/09/03 Javascript
js对象继承之原型链继承实例
2015/01/10 Javascript
JavaScript学习笔记之定时器
2015/01/22 Javascript
JS实现的仿淘宝交易倒计时效果
2015/11/27 Javascript
纯js代码实现简单计算器
2015/12/02 Javascript
javascript实现简单加载随机色方块
2015/12/25 Javascript
纯js实现手风琴效果代码
2020/04/17 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
2017/01/06 Javascript
vue.js开发环境安装教程
2017/03/17 Javascript
详解使用fetch发送post请求时的参数处理
2017/04/05 Javascript
underscore之function_动力节点Java学院整理
2017/07/11 Javascript
Axios学习笔记之使用方法教程
2017/07/21 Javascript
JS实现字符串中去除指定子字符串方法分析
2018/05/17 Javascript
深入浅析Vue中mixin和extend的区别和使用场景
2019/08/01 Javascript
详解基于Vue/React项目的移动端适配方案
2019/08/23 Javascript
WEEX环境搭建与入门详解
2019/10/16 Javascript
vue Element左侧无限级菜单实现
2020/06/10 Javascript
python处理文本文件并生成指定格式的文件
2014/07/31 Python
Python socket C/S结构的聊天室应用实现
2014/11/30 Python
python中快速进行多个字符替换的方法小结
2016/12/15 Python
python 使用while写猜年龄小游戏过程解析
2019/10/07 Python
Reebok俄罗斯官方网上商店:购买锐步运动服装和鞋子
2016/09/26 全球购物
Lookfantastic香港官网:英国知名美妆购物网站
2018/06/19 全球购物
网络编程中设计并发服务器,使用多进程与多线程,请问有什么区别?
2016/03/27 面试题
名人演讲稿范文
2013/12/28 职场文书
集团公司人力资源部岗位职责
2014/01/03 职场文书
优秀士兵先进事迹
2014/02/06 职场文书
淘宝好评语大全
2014/05/05 职场文书
女生节标语
2014/06/26 职场文书