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 相关文章推荐
多文件上传的例子
Oct 09 PHP
php数组函数序列之array_keys() - 获取数组键名
Oct 30 PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
May 16 PHP
php超快高效率统计大文件行数
Jul 05 PHP
php实现数组中索引关联数据转换成json对象的方法
Jul 08 PHP
php检测mysql表是否存在的方法小结
Jul 20 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 PHP
Laravel5.5以下版本中如何自定义日志行为详解
Aug 01 PHP
PHP实现websocket通信的方法示例
Aug 28 PHP
PHP使用DOM对XML解析处理操作示例
Jul 04 PHP
laravel5.2表单验证,并显示错误信息的实例
Sep 29 PHP
PHP 99乘法表的几种实现代码
Oct 13 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验证码类代码( 最新修改,完全定制化! )
2010/12/02 PHP
php中二维数组排序问题方法详解
2015/08/28 PHP
CI(CodeIgniter)框架视图中加载视图的方法
2017/03/24 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
PDO实现学生管理系统
2020/03/21 PHP
jquery使用jxl插件导出excel示例
2014/04/14 Javascript
jQuery带箭头提示框tooltips插件集锦
2014/11/17 Javascript
jquery+php实现搜索框自动提示
2014/11/28 Javascript
JavaScript设计模式之外观模式介绍
2014/12/28 Javascript
直接拿来用的15个jQuery代码片段
2015/09/23 Javascript
表单验证插件Validation应用的实例讲解
2015/10/10 Javascript
使用smartupload组件实现jsp+jdbc上传下载文件实例解析
2017/01/05 Javascript
ie下js不执行的几种可能
2017/02/28 Javascript
整理关于Bootstrap导航的慕课笔记
2017/03/29 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
2018/10/09 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
2019/04/17 Javascript
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
vuex(vue状态管理)的特殊应用案例分享
2020/03/03 Javascript
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
[01:14:05]《加油DOTA》第四期
2014/08/25 DOTA
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
python中函数默认值使用注意点详解
2016/06/01 Python
python 统计数组中元素出现次数并进行排序的实例
2018/07/02 Python
python ddt数据驱动最简实例代码
2019/02/22 Python
Python 字典中的所有方法及用法
2020/06/10 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
HTML5 图片预加载的示例代码
2020/03/25 HTML / CSS
VELTRA台湾:世界自由行专家
2017/08/15 全球购物
澳大利亚家具和家居用品在线商店:Interiors Online
2018/03/05 全球购物
物业管理应届生求职信
2013/10/28 职场文书
导师就业推荐信范文
2014/05/22 职场文书
手术室护士节演讲稿
2014/08/27 职场文书
村创先争优活动总结
2014/08/28 职场文书
安全教育培训心得体会
2016/01/15 职场文书
python自动化八大定位元素讲解
2021/07/09 Python
【海涛七七解说】DCG第二周:DK VS 天禄
2022/04/01 DOTA