#include<stdio.h>
#include <time.h>
#include "windows.h"
#include "math.h"
int countA(int v){
int num=0;
while (v) {
v &= (v-1);
num++;
}
return num;
}
int countB(int v){
int num = 0;
while(v){
num += v & 0x01;
v = v>>1;
}
return num;
}
int abs(int x) {
return (x ^ (x >> 31)) - (x >> 31);
}
int main(){
clock_t start,end;
double duration;
start = clock();
for(int i=1;i<10000000;i++)
countA(i);
// printf("%d\n",countA(i));
end = clock();
duration = (double)(end-start)/CLOCKS_PER_SEC;
printf("%f\n",duration);
start = clock();
for(i=1;i<10000000;i++)
countB(i);
//printf("%d\n",countB(i));
end = clock();
duration = (double)(end-start)/CLOCKS_PER_SEC;
printf("%f\n",duration);
long starta,enda;
starta = GetTickCount();
i=10000000;
while(i--)
countA((int)pow(2,5));
enda = GetTickCount();
duration = (int)(enda-starta)/CLOCKS_PER_SEC;
printf("%f\n",duration);
printf("%d",abs(-23));
return 0;
}
1的個數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.