9 pontos por xguru 2022-02-10 | 1 comentários | Compartilhar no WhatsApp
  • Somar e dividir por 2 pode causar overflow

→ (a + b) / 2

  • Se você souber qual dos dois é o maior, também dá para pegar a diferença entre os dois valores, somá-la ao menor e dividir por 2

→ low + (high - low) / 2

  • Um algoritmo que funciona mesmo sem saber qual é o maior teve a patente expirada em 2016

→ (a / 2) + (b / 2) + (a & b & 1)

  • SWAR : SIMD within a register

→ (a & b) + (a ^ b) / 2

  • Se o compilador suportar 64 bits, faça cast

→ ((unsigned long long)a + b) / 2

  • E depois vêm os códigos em assembly para cada processador... consulte o texto original

1 comentários

 
xguru 2022-02-10

O blog de Raymond Chen, The Old New Thing, aborda uma grande variedade de temas, desde histórias dos bastidores do desenvolvimento do Windows.

No Brasil, foi publicada uma tradução com o título "As 282 Histórias do Desenvolvimento do Windows de Raymond Chen", mas atualmente está esgotada.