宝哥软件园

php实现了一个计算二进制数1的例子

编辑:宝哥软件园 来源:互联网 时间:2021-09-01

本文通过一个例子来说明php如何实现二进制数1的计数算法。分享给大家参考,如下:

问题

输入一个十进制整数,并以数字的二进制表示形式输出1的个数。其中负数用补数表示。

解决方案

这是位操作的话题。解决方案1:1的数量可以通过逐位“与”运算以及每个位和1的“与”运算来计算。解2(最优解):一个巧妙的方法,一个不为0的二进制数必须至少有一位为1。当这个数减1时,它的最后一位1将变成0,后面所有的0都将变成1。例如,10100减去1后会变成10011,然后用原来的数字10100和10011进行and运算后会得到10000,也就是通过这个运算,一个1可以变成0,所以一个二进制数可以执行这样的运算的1会有多少。

实现代码

//Solution 1函数number of 1($ n){ $ count=0;$ flag=1;while ($flag!=0) { if (($n $flag)!=0){ $ count;} $ flag=$ flag 1;}返回$ count}//Solution 2函数number of 1($ n){ $ count=0;If($n 0){ //处理负数$ n=$ n0x7FFFFFFF$ count} while($n!=0){ $ count;$ n=$ n($ n-1);}返回$ count}//test $ num=45;Echo $num。s二进制是。decbin($num)。br/';Echo $num。有。NumberOf1($num)。“一个”;运行结果:

更多对PHP相关内容感兴趣的读者可以查看本网站专题:《PHP数据结构与算法教程》、《php程序设计算法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》、《PHP数学运算技巧总结》、0103010

希望本文对PHP编程有所帮助。

更多资讯
游戏推荐
更多+