程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 快速計算32位數中1的位數

快速計算32位數中1的位數

編輯:關於C
一語句實現x是否為2的若干次冪的判斷
#define is2*n(x)  ((x & (x - 1))? 0 : 1)
int main(void)
{
        int m = 512;
        cout << ((m & (m - 1)) ? false : true) << endl;
        //即當m中只有一位為1時,才為若干次冪值
//若有兩個及以上1,則(m & (m - 1))不為0,輸出0,表示不為2的若干次冪
        return(0);
}
 
類比:x為2的若干次冪即表示x中1的位數為1,題目轉化為求一個32位數中1的位數,如果為1,則表示該數為2的若干次冪
 
同理也可以利用此規則求一個32位數中1的位數, (m & (m - 1)每次可用消除一個1,計算的次數即為1的個數
 
摘自  飛奔蝸牛的Linux之旅。。。 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved