計算乙個整數中的位是1或是0的個數的快速演算法

2021-04-28 11:01:34 字數 701 閱讀 3993

其中uncom_count是所指的快速演算法

其中com_count 是所指的一般演算法

// #include "stdafx.h"

#include  "windows.h"

static inline int uncom_count(unsigned x)

static inline int com_count(unsigned x)

int main(int argc, char* argv)

fprintf(stderr, "time_consumbed by uncom_count = %d ms/n", gettickcount() - start_time);

fprintf(stderr, "bitcount = %d /n",      uncom_count(the_number));

start_time = gettickcount();

for(i = 0; i < count; i++)

fprintf(stderr, "time_consumbed  by com_count  = %d ms/n", gettickcount() - start_time);

fprintf(stderr, "bitcount = %d /n",      uncom_count(the_number));

return 0;

}

計算乙個數中1的個數 0的個數

1.求乙個int數二進位制中1的個數 1 與1 右移 正數 負數都可以 計算的是負數補碼中1的個數 inta cin a int count 0 int n sizeof int 8 位數for int i 0 i a 1 右移一位 cout 2 右移相當於除以2 判斷最低位可用2取餘 右移可用除以...

C 計算乙個整數二進位制位中1的個數

計算乙個整數二進位制位中1的個數。要求效率盡可能的高。且能正確求正數和負數的二進位制中1的個數。pragma once include include 計算乙個整數二進位制位中1的個數。要求效率盡可能的高。且能正確求正數和負數的二進位制中1的個數。32位,0 00000000 00000000 00...

計算乙個整數內「1」的個數 思考

看到乙個面試題,大體是 輸出從1到任意乙個數 正整數 然後統計 1 的個數,如 11 有2個 1 我就寫了下面這段,思路很簡單 先把全部數轉化為字串,然後輸出,最後統計字串中 1 的個數 計算過後,我發現以下有趣事情 10以內 不包括10 有1個 這個不用跑程式,呵呵 10 1 100 20 100...