Qual das seguintes técnicas é a melhor opção para dividir um número inteiro por 2 e por quê?
Técnica 1:
x = x >> 1;
Técnica 2:
x = x / 2;
Aqui x
está um número inteiro.
x = x >>> 1
. Observe também que, dependendo da plataforma e do compilador, pode ser bastante razoável otimizar manualmente divisões e multiplicações usando turnos. - Pensando em microcontroladores, por exemplo, sem suporte direto da ALU para multiplicação.
x /= 2
, porque x >>= 1
parece muito com o ligamento monádico;)
x = x / 2
vez de x /= 2
. Preferência subjetiva talvez :)
⬜=
combinações, elas devem ser usadas sempre que possível. Ele remove o ruído e enfatiza o fato de que x
é modificado , enquanto o =
operador geral sugere que ele adquire um valor completamente novo, independente do antigo. - Sempre evitando os operadores combinados (de modo que seja legível por isso alguém que só sabe operadores matemáticos) pode ter seu ponto bem, mas depois que você precisa abandonar o extremamente útil ++
, --
, +=
também.
x
novamente, nenhum deles é apropriado desta maneira: deve ser umx >>= 1
oux /= 2
, dependendo do que você pretende expressar com a operação. Não porque é mais rápido (qualquer compilador moderno compilará todas as variantes equivalentes para montagem rápida e idêntica de qualquer maneira), mas porque é menos confuso.