在一家外企面试的时候遇到的题,平时容易被大家忽略,从此也看出一点外企文化:注意细节与基础。

最简的办法:

判断一个正整数 i 是不是2的乘方 只要看 (i & (i - 1))==0 是否为true即可。

原理:

凡是2的乘方的正整数,其二进制数必然是以1为首位,其它位都是0。这时候如果给它减1,(在位数相同的情况下)就会变成首位是0,其它位全部是1的结果,然后用“位与”运算,得到的结果是0,就说明这个正整数是2的乘方。

例如:

2的1次方是2,二进制数为10,(2-1)之后变成1,二进制数为01,进行位与运算(10 & 01)得到的结果是二进制00,就是结果0.

2的2次方是4,二进制数为100,(2-1)之后变成3,二进制数为011,进行位与运算(100 & 011)得到的结果是二进制000,就是结果0.

......

判断一个数是不是2的乘方相关推荐

  1. php判断无理数,如何快速判断一个数的开方是不是无理数?

    引言: 学习完了统计之后,我们开始学习了实数,和我们之前学到了一些有理数,以及对无理数的一些认识进行了简单的回顾后,我们又对实数进行了深一步的探索,并掌握了一种新的运算是乘方的逆运算--开方 最初接触 ...

  2. 算法总结:判断一个数是否为素数

    1.约定 x%y为x取模y,即x除以y所得的余数,当x<y时,x%y=x,所有取模的运算对 象都为整数. x^y表示x的y次方.乘方运算的优先级高于乘除和取模,加减的优先级最低. 见到x^y/z ...

  3. 如何判断一个数是否为素数

    1.约定 x%y为x取模y,即x除以y所得的余数,当x<y时,x%y=x,所有取模的运算对 象都为整数. x^y表示x的y次方.乘方运算的优先级高于乘除和取模,加减的优先级最低. 见到x^y/z ...

  4. (Miller Rabin算法)判断一个数是否为素数

    (Miller Rabin算法)判断一个数是否为素数 1.约定 x%y为x取模y,即x除以y所得的余数,当x<y时,x%y=x,所有取模的运算对象都为整数. x^y表示x的y次方.乘方运算的优先 ...

  5. 判断一个数是否为素数的一个讨论(一)

    1.约定 x%y为x取模y,即x除以y所得的余数,当x x^y表示x的y次方.乘方运算的优先级高于乘除和取模,加减的优先级最低.  见到x^y/z这样,就先算乘方,再算除法. A/B,称为A除以B,也 ...

  6. 判断一个数为多少位 比如 3 是 1位 102 是3位。

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 //判断一个数为多少位 比如 3 是 1位   102 是3位. #include <iostream> us ...

  7. python判断一个数是整数、浮点数还是字符串

    python判断一个数是整数.浮点数还是字符串 示例代码:

  8. C语言判断一个数是否是回文数

    C语言判断一个数是否是回文数 #include <stdio.h> int main(){int num, s, y = 0;printf("请输入一个数字: ");s ...

  9. c语言判断2 1000素数,2是不是素数(C语言判断一个数为素数)

    我听说西方不承认2是质数,而中国承认 到底是不是真的 2是质数.质数又称素数.一个大于1的自然数,除了1和它自身外,不能整除其他自然数的数叫做质数:否则称为合数.2是一个大于1的自然数,这一点满足质数 ...

最新文章

  1. 【Sql Server】DateBase-简单的Select查询
  2. C++ OP相关注意事项
  3. 爬虫-selenium初步学习与使用!
  4. css样式继承规则详解
  5. 经典Golang语法50问!
  6. 使用append之后数组维度消失_JAVA魅力之神奇的数组带给你不一样的乐趣
  7. 【Linux系统编程】进程和线程的区别
  8. IOS-—UICollectionView使用综述(一 )(基础篇--垂直列表方式,横向相册方式)
  9. oledb驱动Oracle,Oracle学习笔记:手工注册oracle的oledb驱动 | 学步园
  10. 文件不能超过200k_为什么答题时上传的文件大小不允许
  11. GBDT(MART) 迭代决策树入门教程 | 简介 写的非常好!!
  12. 卡尔曼滤波c语言程序,卡尔曼滤波算法及C语言实现
  13. Opencv 轮廓提取
  14. CCF计算机职业资格认证考试201312-2试题及答案
  15. 运维工程师平均月工资是多少?
  16. TCP四次挥手中的2MSL是什么?
  17. vue-live2d 看板娘
  18. 支付宝小程序与生活号可互相关联啦!
  19. 西门子s7-1200博图v16灌装机PLC程序+西门子KTP1200触摸屏程序 1200plc和3台v90伺服pn通讯
  20. PE中Ghost 使用详解

热门文章

  1. TiDB 在长银五八消费金融核心系统适配经验分享
  2. 【推荐系统】EMBEDDING 在大厂推荐场景中的工程化实践
  3. 燕山大学课程实践项目报告:ISBN号识别系统的设计与开发
  4. PHP、AJAX、二阶段第五周
  5. gitbook 插件 主题
  6. 云服务器安装detectron2报错
  7. upc9520: Knight (象棋马从(0,0)到(n,m)的最小步数)
  8. 爬虫 Pinterest 多个接口分析(uqPN4sH5tPPJ5727zfjVvg==)
  9. 中国品牌日话品牌:智能家居企业如何打造新消费品牌?
  10. 社会财富分配问题模拟