maxとminをビット演算で実装
int max(int a,int b){
if(a > b) return a;
else return b;
}
int max(int a, int b){
return ((-(a>b)) & a) + ((-(a<=b)) & b);
}
28
29.
maxとminをビット演算で実装
・ 𝑎 >𝑏 のとき
int max(int a, int b){
return ((-(a>b)) & a) + ((-(a<=b)) & b);
}
・ 𝑎 ≤ 𝑏 のとき
int max(int a, int b){
return ((-(a>b)) & a) + ((-(a<=b)) & b);
}
29
30.
maxとminをビット演算で実装
・ 𝑎 >𝑏 のとき
int max(int a, int b){
return ((-1) & a) + ((0) & b);
}
・ 𝑎 ≤ 𝑏 のとき
int max(int a, int b){
return ((0) & a) + ((-1) & b);
}
30
31.
maxとminをビット演算で実装
・ 𝑎 >𝑏 のとき
int max(int a, int b){
return ((・・・1111) & a) + ((・・・0000) & b);
}
・ 𝑎 ≤ 𝑏 のとき
int max(int a, int b){
return ((・・・0000) & a) + ((・・・1111) & b);
}
31
2進数表記