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 金额数字转换成英文
May 06 PHP
php学习笔记 php中面向对象三大特性之一[封装性]的应用
Jun 13 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
Jun 25 PHP
PHP实现今天是星期几的几种写法
Sep 26 PHP
将二维数组转为一维数组的2种方法
May 26 PHP
php图片处理函数获取类型及扩展名实例
Nov 19 PHP
ThinkPHP实现ajax仿官网搜索功能实例
Dec 02 PHP
从wamp到xampp的升级之路
Apr 08 PHP
php实现的http请求封装示例
Nov 08 PHP
thinkPHP5框架实现基于ajax的分页功能示例
Jun 12 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
Apr 16 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 友好URL的实现(吐血推荐)
2008/10/04 PHP
php数组转换js数组操作及json_encode的用法详解
2013/10/26 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
2019/06/08 PHP
location.href 在IE6中不跳转的解决方法与推荐使用代码
2010/07/08 Javascript
用客户端js实现带省略号的分页
2013/04/27 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
2013/11/28 Javascript
一个获取第n个元素节点的js函数
2014/09/02 Javascript
JavaScript字符串常用类使用方法汇总
2015/04/14 Javascript
JS获取屏幕高度的简单实现代码
2016/05/24 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
2016/06/09 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
2017/03/25 jQuery
js实现图片旋转 js滚动鼠标中间对图片放大缩小
2017/07/05 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
2017/08/20 Javascript
深入理解ES6之数据解构的用法
2018/01/13 Javascript
webpack-dev-server自动更新页面方法
2018/02/22 Javascript
浅谈Node.js 中间件模式
2018/06/12 Javascript
深入理解JS异步编程-Promise
2019/06/03 Javascript
详解js中的原型,原型对象,原型链
2020/07/16 Javascript
[04:19]DOTA2完美大师赛第四天精彩集锦
2017/11/26 DOTA
python读文件逐行处理的示例代码分享
2013/12/27 Python
Python类的多重继承问题深入分析
2014/11/09 Python
十分钟利用Python制作属于你自己的个性logo
2018/05/07 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
python使用knn实现特征向量分类
2018/12/26 Python
python实现图片压缩代码实例
2019/08/12 Python
利用python+request通过接口实现人员通行记录上传功能
2021/01/13 Python
Etam艾格英国官网:法国著名女装品牌
2019/04/15 全球购物
Unix如何在一行中运行多个命令
2015/05/29 面试题
长辈证婚人证婚词
2014/01/09 职场文书
企业军训感想
2014/02/07 职场文书
《鸟的天堂》教学反思
2014/02/27 职场文书
冬季施工防火方案
2014/05/17 职场文书
分享7个 Python 实战项目练习
2022/03/03 Python
Python matplotlib绘制雷达图
2022/04/13 Python
python垃圾回收机制原理分析
2022/04/13 Python