08/01/24 21:17:28
#include <stdio.h>
#include <time.h>
#define N 10000000
int main() {
unsigned a, b=0;
int k;
int cl, clsum[3] = {0};
for(k=0;k<200;k++) {
cl=clock(); for(a=0;a<N;a++)b+=(a>=(unsigned)-b); clsum[0]+=clock()-cl;
cl=clock(); for(a=0;a<N;a++)b+=((a>>1)+(b>>1)+(a&b&1u))&0x80000000u; clsum[1]+=clock()-cl;
cl=clock(); for(a=0;a<N;a++)b+=((a>>1)+(b>>1)+(a&b&1u))>>31; clsum[2]+=clock()-cl;
}
printf("条件式 : %d\n", clsum[0]);
printf("ビット演算1: %d\n", clsum[1]);
printf("ビット演算2: %d\n", clsum[2]);
printf("%u\n", b);
return 0;
}
条件式 : 566
ビット演算1: 672
ビット演算2: 701
やっぱり条件式が一番速い。