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 相关文章推荐
服务器端解压缩zip的脚本
Dec 22 PHP
php入门学习知识点七 PHP函数的基本应用
Jul 14 PHP
windows环境下php配置memcache的具体操作步骤
Jun 09 PHP
PHP 实现判断用户是否手机访问
Jan 21 PHP
php curl请求信息和返回信息设置代码实例
Apr 27 PHP
php使用gzip压缩传输js和css文件的方法
Jul 29 PHP
PHP MSSQL 分页实例
Apr 13 PHP
Yii框架用户登录session丢失问题解决方法
Jan 07 PHP
PHP Primary script unknown 解决方法总结
Aug 22 PHP
tp5框架无刷新分页实现方法分析
Sep 26 PHP
PHP用swoole+websocket和redis实现web一对一聊天
Nov 05 PHP
使用Git实现Laravel项目的自动化部署
Nov 24 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
如何开始收听短波广播
2021/03/01 无线电
PHP小教程之实现链表
2014/06/09 PHP
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
2012/05/30 Javascript
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
2013/05/14 Javascript
JS判断、校验MAC地址的2个实例
2014/05/05 Javascript
浅析BootStrap模态框的使用(经典)
2016/04/29 Javascript
javascript中JSON.parse()与eval()解析json的区别
2016/05/19 Javascript
JavaScript手机振动API
2016/06/11 Javascript
利用transition实现文字上下抖动的效果
2017/01/21 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
AngularJS封装$http.post()实例详解
2017/05/06 Javascript
Underscore之Array_动力节点Java学院整理
2017/07/10 Javascript
webpack配置导致字体图标无法显示的解决方法
2018/03/06 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
2018/03/08 Javascript
微信小程序学习笔记之函数定义、页面渲染图文详解
2019/03/28 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
Python3写入文件常用方法实例分析
2015/05/22 Python
浅谈python为什么不需要三目运算符和switch
2016/06/17 Python
Python实现破解12306图片验证码的方法分析
2017/12/29 Python
python占位符输入方式实例
2019/05/27 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
Python中字典与恒等运算符的用法分析
2019/08/22 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
2020/02/26 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
html5实现图片转圈的动画效果——让页面动起来
2017/10/16 HTML / CSS
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
Carmen Sol官网:购买果冻鞋、手袋和配件
2021/01/01 全球购物
师范院校学生自荐信范文
2013/12/27 职场文书
读书活动实施方案
2014/03/10 职场文书
2014年党课学习材料
2014/05/11 职场文书
道德大讲堂实施方案
2014/05/14 职场文书
马丁路德金演讲稿
2014/05/19 职场文书
2015年城管执法工作总结
2015/07/23 职场文书
简单聊一聊SQL注入及防止SQL注入
2022/03/23 MySQL