как битовый сдвиг обращает этот неподписанный короткий int - PullRequest
0 голосов
/ 15 апреля 2020

Я запутался в этой побитовой операции, включая символ | и то, как сдвиг влево и вправо работает в этом примере кода для изменения целого числа ниже:

uint16_t swap_uint16( uint16_t val ) 
{
    return (val << 8) | (val >> 8 );
}

Так что я понимаю это << сдвигает int влево и >> сдвигает его вправо. Я не уверен, как | работает с этими двумя операциями смены

спасибо

1 Ответ

1 голос
/ 15 апреля 2020

Вы не указали язык, но в большинстве языков | означает bit-wise OR, поэтому вы, скорее всего, смотрите на ИЛИ каждый соответствующий бит

example random bytes
A: 11001010
B: 00101011
-----------
   11101011  (A and B bit-wise OR'ed)
...