Как бы сделать следующее:битого сдвиг в C
unsigned short x = 0xFFFF;
unsigned short y = 0xAE;
x |= y & 1;
x |= y & (1 << 1);
x |= y & (1 << 2);
x |= y & (1 << 3);
x |= y & (1 << 4);
x |= y & (1 << 5);
x |= y & (1 << 6);
x |= y & (1 << 7);
x |= y & (1 << 8);
x |= y & (1 << 9);
x |= y & (1 << 10);
x |= y & (1 << 11);
x |= y & (1 << 12);
x |= y & (1 << 13);
x |= y & (1 << 14);
x |= y & (1 << 15);
printf("%x", x);
Я хочу й равный 0xae, но он по-прежнему равен 0xFFFF.
Ну, если вы уже знаете, что хотите, чтобы x равнялся, могу ли я предложить 'x = 0xAE'? –
Непонятно. «x = y» будет делать то, что вы говорите. Вы хотите установить более низкие 8 бит x равными нижним 8 битам y, возможно? –
Так что нет способа изменить бит, который уже равен 1 0? – Blade3