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 ++?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top