int func (int x, int y) { return (x&y) + ((x^y)>>1); }
01100 11000 & -------------- 01000
01100 11000 ^ ----------- 10100