Когда вы думаете о значении в двоичном представлении, оно сдвигает значение влево 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
слишком велико или если левая часть операции имеет отрицательное значение.