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 相关文章推荐
免费手机号码归属地API查询接口和PHP使用实例分享
Apr 10 PHP
非常好用的Zend Framework分页类
Jun 25 PHP
PHP判断一个gif图片是否为动态图片的方法
Nov 19 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
Jan 05 PHP
PHP中addcslashes与stripcslashes函数用法分析
Jan 07 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
Oct 18 PHP
CI框架常用函数封装实例
Nov 21 PHP
详谈PHP面向对象中常用的关键字和魔术方法
Feb 04 PHP
2017年最新PHP经典面试题目汇总(上篇)
Mar 17 PHP
Laravel框架实现调用百度翻译API功能示例
May 30 PHP
Laravel 微信小程序后端实现用户登录的示例代码
Nov 26 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 20 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测试硬盘写入速度示例
2014/01/27 PHP
php生成验证码,缩略图及水印图的类分享
2016/04/07 PHP
php 使用html5实现多文件上传实例
2016/10/24 PHP
响应鼠标变换表格背景或者颜色的代码
2009/03/30 Javascript
关于取不到由location.href提交而来的上级页面地址的解决办法
2009/07/30 Javascript
模仿JQuery sortable效果 代码有错但值得看看
2009/11/05 Javascript
使用SyntaxHighlighter实现HTML高亮显示代码的方法
2010/02/04 Javascript
jquery.Jwin.js 基于jquery的弹出层插件代码
2012/05/23 Javascript
json对象转字符串如何实现
2012/12/02 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
2014/10/17 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
2015/12/24 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
Node.js Sequelize如何实现数据库的读写分离
2016/10/23 Javascript
js实现表格筛选功能
2017/01/18 Javascript
浅谈angularjs $http提交数据探索
2017/01/20 Javascript
JavaScript读写二进制数据的方法详解
2018/09/09 Javascript
angularJs利用$scope处理升降序的方法
2018/10/08 Javascript
微信小程序如何获取用户头像和昵称
2019/09/23 Javascript
[01:02:06]LGD vs Mineski Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
[55:39]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第二场 1月19日
2021/03/11 DOTA
Python Cookie 读取和保存方法
2018/12/28 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
Python识别快递条形码及Tesseract-OCR使用详解
2019/07/15 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
2019/09/06 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
Python3.7安装pyaudio教程解析
2020/07/24 Python
Pycharm的Available Packages为空的解决方法
2020/09/18 Python
英国高端食品和葡萄酒超市:Waitrose
2016/08/23 全球购物
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
C语言笔试集
2012/07/24 面试题
学校师德承诺书
2014/05/23 职场文书
2016年端午节寄语
2015/12/04 职场文书
css3实现背景图片颜色修改的多种方式
2021/04/13 HTML / CSS
html5实现点击弹出图片功能
2021/07/16 HTML / CSS