1的個數

#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;
	
}


發佈了46 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章