У меня есть следующий код C, который работает:
int ex(unsigned int x) {
int mask = 0x55555555;
int a = ((x >> 0) & mask );
return a + ((x >> 1) & mask );
}
Однако, когда я расширяю его до этого, я получаю другой результат:
int ex(unsigned int x) {
int mask = 0x55555555;
int a = ((x >> 0) & mask );
int b = ((x >> 1) & mask );
return a + b;
}
В чем причина этой разницы?
EDIT: Заметьте, я компилирую это для 32bit.