介绍
今天就跟大家聊聊有关使用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 ,,美元标志),!=,0),{ ,,,美元计数+ +; ,,} ,,flag 美元;=,flag 美元;& lt; & lt;, 1; ,,} return 才能;美元计数; }
//,解法二 function NumberOf1 (n)美元 { ,count 美元;=,0; ,如果($ n & lt;, 0){//大敌;处理负数 ,,n 美元;=,n&美元;0 x7fffffff; ,,+ + $计数; ,} ,而(n 美元;!=,0){ 美元才能数+ +; 时间=美元才能n n 美元;,,($ n - 1); ,} ,return 美元计数; }
//测试 num=45美元; echo num !”美元的二进制是“.decbin (num美元)!”& lt; br/在“; echo num美元霸主地位;共有“.NumberOf1 (num美元)干净个1“;
运行结果:
看完上述内容,你们对使用php怎么统计二进制中1的个数有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。