Door Anoniem: Nul, omdat het vaak makkelijker (sneller) digitaal rekent.
Laatst wilde ik de decimale waarde van het kwadraat van de uitkomst van sin(15) zo dicht mogelijk benaderen met één byte.
Dus ik wat zitten te prutsen op mijn rekenmachine en kwam uit op .00010001 en ik dacht nog ah lekker veel nullen in deze byte, dan valt er vast wat te vereenvoudigen/versnellen.
Als je dit met een byte Y vermenigvuldigt doe je .0001 x Y + .00000001 x Y.
Dats bijv. een kwestie van wat shifts en dan optellen in plaats van een universele bytevermenigvuldigingsroutine van 35 a 40 instructies gebruiken en evenzoveel microsekontjes laten verstrijken en dat kan tijdwinst opleveren bij de uitvoering van de berekening in een eenvoudige microcontroller.
Stel je vermenigvuldigt .00010001 met een waarde die op een bepaald moment 11111010 is, dan zou men eerst .0001 x 11111010 kunnen doen en die uitkomst is simpel 1111,1010. (komma!)
Daarna 0.00000001 x 11111010 en de uitkomst daarvan is .11111010.
Beide uitkomsten bij elkaar optellen: 1111,1010 + ,11111010 ( 1 add instructie) geeft 10000,10011010
en dat is tevens de uitkomst van de vermenigvuldiging die bestaat uit 2 bytes.
,
Dus in decimale termen:
We hebben hierboven 0.06640625 (..=benadering van het kwadraat van sin(15) tot op 1 byte..) vermenigvuldigt met 250.
De uitkomst hiervan zou 16,6015625 moeten zijn,
en inderdaad: onze uitkomst 10000,10011010 is de binaire weergave daarvan.
Ander waarden van byte Y gaan op precies dezelfde manier.
Handig als je geen Multiplier instructie aan boord hebt, en er niet teveel tijd verloren mag gaan in de berekening.
Dankzij de vele nullen in een vaste operand (of operator).
Dus YES, YES binaire NULLEN... JOEPIE!!!!
Wel extreem gunstig deze keer, maar je kan er vaker tijd mee winnen, de ene keer wat meer de andere keer wat minder.
En dat kan bij sommige toepassingen heel belangrijk zijn.
Bent u diezelfde held die de TAILS versies aankondigt hier op het forum? Uw schrijfstijl spreekt me aan. Fijne dag verder ;-)