算法题/求二进制数中1的个数
来源:互联网 发布:哈尔滨java培训机构 编辑:程序博客网 时间:2024/06/04 19:01
python 2.7
输出数字的二进制中的1的个数; 判断一个数是否为2的幂
思路:一个数n与n-1相&消除最低位的1,并且如果这个数n与n-1相&==0,则这个数为2的次幂。
快速法,其运算次数与输入n的大小无关,只与n中1的个数有关。如果n的二进制表示中有k个1,那么这个方法只需要循环k次即可。其原理是不断清除n的二进制表示中最右边的1,同时累加计数器,直至n为0。
假设n中有5个1,n&n-1可以清除n中最右边的1,生成的数中包含四个1,在继续&操作生成的数中包含3个1.。。。。
判断n是否为2的次幂,即判断 n&(n-1) ==0是否成立
#coding:utf-8def count_1(n): if n==0: return 0 else: counter = 0 while n: n = n&(n-1) counter +=1 return counter#判断是否为2的次幂def pow_2(n): if n&n-1==0: return True else: return Falseprint(count_1(7))print(pow_2(7))print(count_1(8))print(pow_2(8))
阅读全文
0 0
- 算法题/求二进制数中1的个数
- 算法题:求N!末尾0的个数和求二进制数中1的个数
- 关于求二进制数中1的个数的算法
- 算法-求二进制数中1的个数
- 算法-求二进制数中1的个数
- 算法-求二进制数中1的个数
- 算法-求二进制数中1的个数
- 算法-求二进制数中1的个数
- 算法-求二进制数中1的个数
- 算法-求二进制数中1的个数
- 算法-求二进制数中1的个数
- 算法-求二进制数中1的个数
- 算法-求二进制数中1的个数
- 算法-求二进制数中1的个数
- 【算法练习】还是求二进制数中1的个数
- 算法-求二进制数中1的个数
- 算法-求二进制数中1的个数
- 算法-求二进制数中1的个数
- leetcode-51-N-Queens II
- Python基础四
- SED高级编辑命令
- Java UML类图详解
- 使用Coding.net+Hexo+node.js+git来搭建个人博客
- 算法题/求二进制数中1的个数
- PhotoView的使用
- VMware Workstation虚拟机不能联网的解决办法
- iOS-NSRunLoop详解+++
- flask: hello world
- 用代码实现以下需求
- Redis 高可用架构最佳实践
- stm32学习笔记(五)独立看门狗
- 我的teamtalk学习历程 -- (1)安装,编译及配置