Что означает 1 << i и как его использовать? - PullRequest
0 голосов
/ 06 мая 2020

Я видел, как кто-то использовал 1 << i </strong>, иногда 1 << n </strong>. Что это такое и как его использовать?

1 Ответ

0 голосов
/ 06 мая 2020

Когда вы думаете о значении в двоичном представлении, оно сдвигает значение влево n раз. n zero di git (s) будет добавлено справа.

Итак, 1b станет 100b et c, если n == 2.

Если вы посмотрите при десятичном значении сдвиг на один раз (n==1) эквивалентен умножению значения на 2. Двойной сдвиг равен операции, умноженной на 4, и т. д.

Одним из преимуществ является то, что сдвиг битов может быть быстрее, чем «реальное» целочисленное умножение.

Также часто в вычислениях вы будете видеть так называемые битовые поля, где каждый бит включает или выключает что-то, или имеет какое-то особое значение.

Например, на каждом микроконтроллере бит регистра может представлять цифровой выход, который подключен к светодиоду.

Здесь обозначение может использоваться для создания «маски», которая представляет номер того бита (i), который программист хочет манипулировать.

Например,

x &= ~(1<<4) очищает бит номер 4, а x |= (1<<4) устанавливает тот же бит.

Имейте в виду, что смещение может вызвать неопределенное поведение на некоторых системы, если i слишком велико или если левая часть операции имеет отрицательное значение.

...