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 xestá 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 >>= 1parece muito com o ligamento monádico;)
x = x / 2vez 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.
xnovamente, nenhum deles é apropriado desta maneira: deve ser umx >>= 1oux /= 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.