Bit deslocando esquerda
-
05-07-2019 - |
Pergunta
Vamos dizer que eu quero i
mudança bit duas vezes para a esquerda e armazenar o valor em f
.
f = i << 2;
Isso está correto? Como exatamente eu fazer isso em C / C ++?
Solução
Sim.
f = i << 2
As mudanças são úteis em uma série de operações girando bits.
Isto costumava ser uma ótima maneira de multiplicar um número por quatro. No entanto, estes dias, compiladores otimizar tendem a cuidar disso para você.
Tenha em mente que os dois bits mais à esquerda são descartados.
Outras dicas
Como uma nota adicional: mesmo que sua pergunta é C++
marcado, provavelmente, é importante notar que C e C ++ levou ligeiramente diferentes caminhos com relação à mudança valores negativos. Em C ++ o resultado de fazer <<
ou >>
em um valor negativo é definido pela implementação. Em C >>
é definido pela implementação, enquanto <<
produz comportamento indefinido .
Sim, i << 2
, f = i << 2
, ou f <<= 2
são todas as coisas que se pode querer fazer em pedaços de deslocamento.
Mais coisas turnos para manter em mente:
-
Você tem
>>
também. No nível bit,>>
funciona de forma diferente para tipos assinados e não assinados. -
a prioridade de
<<
e>>
é inferior ao de+
e-
, que engana algumas pessoas, como se poderia imaginar que eles sejam mais como*
e/
.
Por uma questão de integridade para ajudá-lo com suas operações de bit você pode conferir esta página: uow LIVRO DE TEXTO -> bitops.html