Wiskundemeisjes

Ionica & Jeanine
 
Slik Internetbureau Rotterdam Internetbureau Rotterdam



  • Laatste Reacties

Categorieën

Archief

Delen door 13 voor gevorderden


In Trivia, door Ionica

Ernst (één van de heren achter wiskundesletjes.nl, maar dat terzijde) wees me op een gave truc om snel te delen bij programmeren. Ik was zelf nooit een goede, elegante programmeur (brute force is my middle name), maar ik herinner we wel dat delen meer tijd kost dan vermenigvuldigen. Dus als je delen op de een of andere manier kunt vervangen door vermenigvuldigen, dan wordt je programma sneller.


ridiculousfish

Op Ridiculous Fish Blog staat een prachtig stuk over delen door 13.

Stel dat je een of andere geheel getal wilt delen door 13 en dat programmeert in C. De compiler code doet dan iets geks, namelijk vermenigvuldigen met 1321528399 (en daarna nog wat andere dingen). Zoals de scherpe lezer nu zal opmerken, is delen door 13 niet hetzelfde als vermenigvuldigen met 1321528399.

Echter: vermenigvuldigen met 1321528399 en daarna delen door \(\) (en bedenk dat delen door 2 makkelijk is, dat is een bitshift) is hetzelfde als delen door 12,9999999977299... En dat lijkt dan weer heel erg op 13.

Lees op Ridiculous Fish Blog een mooie, intuïtieve uitleg waarom de afronding altijd goed gaat. Of koop gelijk Hacker's Delight, het boek waar deze truc al veel eerder stond. Dit is trouwens verder geen speciale eigenschap van 13, voor andere delers kun je ook een getal vinden om mee te vermenigvuldigen (en bitshiften).