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

最简的办法:

判断一个正整数 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. 大数据之公开数据的价值
  2. 看漫画学python pdf下载_用python下载漫画并打包成pdf文件
  3. js 闭包的用法详解
  4. 可以编辑的标签控件CStatic
  5. CSS:CSS 在工程中改变——面向对象的CSS (OO CSS)
  6. pygame里面物体闪烁运动_利用自闪烁发光二极管探究小车在倾斜轨道上的运动规律...
  7. torch.mul() 和 torch.mm() 区别【矩阵a和b对应位相乘/矩阵相乘】
  8. .NET 环境中使用RabbitMQ 转发 http://www.cnblogs.com/yangecnu/p/4227535.html
  9. c语言指针生成numpy数组,python – 在cython中声明numpy数组和c指针
  10. jsp中提供的四种属性范围
  11. Nginx怎么打开目录浏览功能
  12. 《剑指offer》面试题19——二叉树的镜像(C++)
  13. java 序列化 serialVersionUID 的作用 和 两种添加方式
  14. 【python技能树】python编码规范
  15. grasshopper for rhino 6下载_Grasshopper做分形图案
  16. DP83848IVV硬件电路设计
  17. 【原创】2021-2001重庆统计年鉴面板数据、重庆市统计年鉴、重庆年鉴、重庆区县数据(可直接使用)
  18. 业务流程图和数据流程图、流程图
  19. 工作三年的Java程序员该如何规划后续的职业发展?
  20. C/C++之钢条切割

热门文章

  1. Stata:缺失值的填充和补漏
  2. Office Visio 2007(64位)密钥
  3. 经典二十四点程序游戏
  4. 自动化运维之系统安装部署
  5. Unity制作安装程序并写入注册表
  6. java吃货联盟系统源码_java-吃货联盟订餐系统
  7. Python 3.6实现单博主微博文本、图片及热评爬取
  8. nyoj 628 小媛在努力【大水题】
  9. 网络--keytool自签名SSL证书(免费)以及私钥签名、公钥验签
  10. Java中所有类的祖先——Object类