最近招聘季,看JULY大哥的面试100题时,碰到这么一个扩展问题: 如何用一个语句判断一个整数是不是二的整数次幂?(此题在编程之美也有) easy, 2的整数次幂的二进制形式只有一个1,只要用i和i-1按位相与,结果为零就说明是: int i; bool b ...
题目 如何判断一个数是不是 的整数次幂 解题方法 思路: 首先把 的整数次幂转换成二进制数,十进制的 转换成二进制是 B, 转换成二进制是 B, 转化成二进制是 B 如果一个整数是 的整数次幂,那么当它转化成二进制时,只有最高位是 ,其他位都是 接下来如果把这些 的整数次幂各自减 ,再转化成二进制。 这时候如果用原数值 的整数次幂 和它减 的结果进行按位与运算,也就是n amp n ,结果则为 结 ...
2020-04-27 14:04 0 2505 推荐指数:
最近招聘季,看JULY大哥的面试100题时,碰到这么一个扩展问题: 如何用一个语句判断一个整数是不是二的整数次幂?(此题在编程之美也有) easy, 2的整数次幂的二进制形式只有一个1,只要用i和i-1按位相与,结果为零就说明是: int i; bool b ...
前言 概念: 如果一个数是2的幂,那么它的二进制是这样的: 2 10 4 100 8 1000 16 10000 也就是第一个是1,其他都是0。 然后-1的话: 1 01 4 11 8 111 16 1111 正文 (num&(num-1))==0 就是了。 解释 ...
#encode=utf-8 import time print u"写一个方法判断一个数是否能被2整除" def whole1(x): try: n=0 x=int(x ...
最近在学习微软推出的虚拟课程中关于网络上最火的20个关于c#的问题,写下关于对于这个问题的个人理解和解决思路,请各位看官笑纳. 题目为:(原)判断一个数字是否2的幂数? 这是我个人还没看正确答案前自己的解决思路(一个小控制台程序),代码 ...
...
第一种方法 暴力解法 第二种方法 示例分析 以16为例,二进制表示为 16减1为15的二进制表示为 两者按位与 十进制表示为0,说明是2的N次幂。 扩展-判断一个数是否是n的N次幂 参考 [算法]快速判断一个数是否是2的幂次方 ...
利用与(&)运算符 可以快速判断一个数是否为2的幂次方 将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了N个0, 因此问题可以转化为判断1后面是否跟了N个0就可以了。 如果将这个数减去1后会发现,仅有的那个1会变为0,而原来 ...
判断一个数是不是2的几次幂,最简单粗暴的做法就是直接迭代除以2,这里有一个更好的方法,那就是采用位运算。 我们观察下面属于2的几次幂的数的变化规律,用2进制表示。 我们会发现凡是2的几次幂0除外,用二进制表示第一位全是1,后面全是0。这个规律好像是这样但是有什么用呢,不要急 ...