判断一个整数的二进制位中有多少个1

阅读: 评论:0

判断一个整数的二进制位中有多少个1

判断一个整数的二进制位中有多少个1

循环: x = x & ( x - 1 ); count++; 直到x为0为止。该方法的时间复杂度是O(m)

在此,不妨把x的二进制位表示为
          x=an-1an-2...a0。
按从低位到高位的顺序,不失一般性,假设x的第i位为第一个为1的二进制位,即:ai=1。此时有:
          x       =an-1an-2...ai+1         (x-1)  =an-1an-2...ai+1很明显,从式1和式2可以得出,在第一次 x & (x-1) 后:
          x=an-1an-2...ai+1之后重复同样操作,直到x的二进制位中没有1为止
从上面可以看出,每执行过一次 x & (x-1) 后,都会将x的二进制位中为1的最低位的值变为0,并记数加1。
目前而言,一个整数最大64bit,所有三种方法执行起来都可以认为是0(1)。

本文发布于:2024-02-04 19:40:43,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170714986658915.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:中有   整数   多少个
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23