#include <stdio.h>
int f1(unsigned char i){
//if文を使う
if(i>99)i/=2;
return i;
}
int f2(unsigned char i){
//マスクを使う
unsigned char mask=(~(i-100)>>8)&0xFF;
i=i^(mask&(i^(i/2)));
return i;
}
int main(void) {
for(int i=0;i<256;i++){
int f1r=f1((unsigned char)i);
int f2r=f2((unsigned char)i);
if(f1r!=f2r)
printf("miss! i=%d f1=%d f2=%d\n",i
,f1r
,f2r
); //printf("i=%d f1=%d f2=%d\n",i,f1r,f2r);
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CmludCBmMSh1bnNpZ25lZCBjaGFyIGkpewoJLy9pZuaWh+OCkuS9v+OBhgoJaWYoaT45OSlpLz0yOwoJcmV0dXJuIGk7Cn0KaW50IGYyKHVuc2lnbmVkIGNoYXIgaSl7CgkvL+ODnuOCueOCr+OCkuS9v+OBhgoJdW5zaWduZWQgY2hhciBtYXNrPSh+KGktMTAwKT4+OCkmMHhGRjsKCWk9aV4obWFzayYoaV4oaS8yKSkpOwoJcmV0dXJuIGk7Cn0KaW50IG1haW4odm9pZCkgewoJZm9yKGludCBpPTA7aTwyNTY7aSsrKXsKCQlpbnQgZjFyPWYxKCh1bnNpZ25lZCBjaGFyKWkpOwoJCWludCBmMnI9ZjIoKHVuc2lnbmVkIGNoYXIpaSk7CgkJaWYoZjFyIT1mMnIpCgkJCXByaW50ZigibWlzcyEgaT0lZCBmMT0lZCBmMj0lZFxuIixpLGYxcixmMnIpOwoJCS8vcHJpbnRmKCJpPSVkIGYxPSVkIGYyPSVkXG4iLGksZjFyLGYycik7Cgl9CglwdXRzKCJlbmQiKTsKCXJldHVybiAwOwp9Cg==