求一個數的二進制數中所含1的個數的代碼實現
阿新 • • 發佈:2017-07-10
article snippet 出現 pri data- count tdi main 代碼實現
#include<stdio.h> int numberOf1_solution1(int n)/*將一個正數以此向右移一位,與1做與運算。直到這個數為零*/ { int count = 0; while (n) { if (n&1) count++; n=n >> 1; } return count; } int numberOf1_solution2(int n)/*將1以此向右移動以為,與一個數(正負數均可)做與運算,直到1出現上溢為止*/ { int count = 0, i = 1; while (i) { if (n&i) count++; i = i << 1; } return count; } int numberOf1_solution3(int n)/*將一個數減去1後再與本身相與。便可降低一個1,利用這個原理求1的個數*/ { int count = 0; while (n) { n = (n - 1)&n; count++; } return count; } int main() { printf("%d\n",numberOf1_solution3(5)); return 0; }
求一個數的二進制數中所含1的個數的代碼實現