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 相关文章推荐
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
Oct 13 PHP
php 攻击方法之谈php+mysql注射语句构造
Oct 30 PHP
PHP 基于文件头的文件类型验证类函数
May 01 PHP
PHP中file_exists函数不支持中文名的解决方法
Jul 26 PHP
3款值得推荐的微信开发开源框架
Oct 28 PHP
smarty模板引擎之内建函数用法
Mar 30 PHP
5款适合PHP使用的HTML编辑器推荐
Jul 03 PHP
php计算年龄精准到年月日
Nov 17 PHP
php实现贪吃蛇小游戏
Jul 26 PHP
PHP实现的mysql操作类【MySQL与MySQLi方式】
Oct 07 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
Jun 13 PHP
PHP如何通过date() 函数格式化显示时间
Nov 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 网上商城促销设计实例代码
2012/02/17 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
2014/02/18 PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
2014/07/08 PHP
CI框架简单邮件发送类实例
2016/05/18 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
PHP如何防止用户重复提交表单
2020/12/09 PHP
JavaScript类和继承 this属性使用说明
2010/09/03 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
JS实现两表格里数据来回转移的方法
2015/05/28 Javascript
理解Javascript的call、apply
2015/12/16 Javascript
WordPress中利用AJAX技术进行评论提交的实现示例
2016/01/12 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
2016/04/14 Javascript
Js遍历键值对形式对象或Map形式的方法
2016/08/08 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
CSS3 3D 技术手把手教你玩转
2016/09/02 Javascript
js实现3d悬浮效果
2017/02/16 Javascript
Vuex之理解Getters的用法实例
2017/04/19 Javascript
js canvas画布实现高斯模糊效果
2018/11/27 Javascript
JS 自执行函数原理及用法
2019/08/05 Javascript
JavaScript Date对象功能与用法学习记录
2020/04/28 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
2020/11/07 Javascript
复习Python中的字符串知识点
2015/04/14 Python
使用anaconda的pip安装第三方python包的操作步骤
2018/06/11 Python
浅析Python3中的对象垃圾收集机制
2019/06/06 Python
Python字符串、列表、元组、字典、集合的补充实例详解
2019/12/20 Python
tensorflow 重置/清除计算图的实现
2020/01/19 Python
浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
2020/06/30 Python
悬挂训练绳:TRX
2017/12/14 全球购物
Molly Bracken法国电子商店:法国女性时尚品牌
2019/07/24 全球购物
小学教师师德反思
2014/02/03 职场文书
大专生自我鉴定怎么写
2014/09/16 职场文书
酒店辞职信怎么写
2015/02/27 职场文书
士兵突击观后感
2015/06/16 职场文书
pycharm 如何查看某一函数源码的快捷键
2021/05/12 Python
Tomcat弱口令复现及利用
2022/05/06 Servers