原文:[算法]快速判斷一個數是否是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