原文:[算法]快速判断一个数是否是2的幂次方

利用与 amp 运算符 可以快速判断一个数是否为 的幂次方 将 的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个 ,并且 后面跟了N个 , 因此问题可以转化为判断 后面是否跟了N个 就可以了。 如果将这个数减去 后会发现,仅有的那个 会变为 ,而原来的那n个 会变为 ,因此将原来的数与去减去 后的数字进行与运算后会发现为零。 因此,最快速的方法是: Number amp Nu ...

2020-04-08 21:28 0 1492 推荐指数:

查看详情

#6 判断一个数是否为2的n次方

「ALBB面试题」 【题目】 如何判断一个数是否为2的n次方 【题目分析】 看到这种题,相信大家第一反应就是循环除2,这样做肯定是可以得出结果的;但是这种做法无疑大大增加了计算机的运行时间,一个非常大的数字可能会让计算机内存溢出,有没有更好的解决方式呢?有!如果你对数字2敏感,那么一定 ...

Sat Feb 23 23:12:00 CST 2019 2 646
快速判断一个数是否是2的次方以及是几次方(二进制)

判断是否是2的次方一个2的次方数表示成二进制,发现它是100000...,如果将这个数减一,那个1会变成0,0会变成1 因此这个数与其减一后的进行与运算结果为0. 最快速的方法: (number & number - 1) == 0   1000 ...

Sat Oct 19 04:56:00 CST 2019 0 534
判断一个数是否是2的

前言 概念: 如果一个数是2的,那么它的二进制是这样的: 2 10 4 100 8 1000 16 10000 也就是第一个是1,其他都是0。 然后-1的话: 1 01 4 11 8 111 16 1111 正文 (num&(num-1))==0 就是了。 解释 ...

Mon Mar 16 23:34:00 CST 2020 0 618
快速判断一个数是否为素数

对于每一个大于等于5的,它只有在6的两侧才可能是素数 因为大于等于5的可以表示为6x-1,6x,6x+1,6x+2,6x+3,6x+4,6x+5.... 而6x,6x+2=2(3x+1),6x+3=3(x+1),6x+4=2(3x+2)都不可能是素数, 所以我们对于一个数n,直接先判断 ...

Tue Apr 16 04:39:00 CST 2019 0 541
判断一个数是否是2的N次

第一种方法 暴力解法 第二种方法 示例分析 以16为例,二进制表示为 16减1为15的二进制表示为 两者按位与 十进制表示为0,说明是2的N次。 扩展-判断一个数是否是n的N次 参考 [算法]快速判断一个数是否是2的次方 ...

Mon Nov 01 17:27:00 CST 2021 0 110
python判断一个数是否是2的几次

判断一个数是不是2的几次,最简单粗暴的做法就是直接迭代除以2,这里有一个更好的方法,那就是采用位运算。 我们观察下面属于2的几次的变化规律,用2进制表示。 我们会发现凡是2的几次0除外,用二进制表示第一位全是1,后面全是0。这个规律好像是这样但是有什么用呢,不要急 ...

Mon Dec 24 21:49:00 CST 2018 0 2301
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM