Dec2Binary ( dec ) voor FM18

Deze functie zet een decimaal getal ook om naar eenbinaire reeks, maar deze werkt met de vanaf FM18 beschikbare while-functie:

While (
[
n = Int ( dec ) ; // Dit is de invoer
p = If ( n > 0 ; Int ( Ln ( n ) / Ln ( 2 ) ) ) ; // Maximale macht van 2 bepalen
b = If ( n > 0 ; “” ; 0 ) // Lege variabele + pleistertje om met 0 om te kunnen gaan
] ;
p ≥ 0 ;
[
f = 2^p ; // Macht van 2 ter controle
p = p – 1 ; // Aftellen iteratie
x = Case ( n = 0 ; 0 ; n ≥ f ; 1 ; 0 ) ; // Bepalen van 1 of 0
n = n – f * x ; // Rest bepalen
b = b & GetAsText ( x ) // Digit toevoegen aan tot hier gevonden reeks
] ;
b // Resultaat tonen
)

(bij kopiëren vanuit je browser zullen mintekens (-) en quotes ( “” ) verkeerd worden geplakt, vervang die tekens na het plakken voor de juiste)

Het bijzondere van deze functie is dat het resultaat altijd werkelijk tekst is en dat je dus geen rekening hoeft te houden met FileMaker die ineens wetenschappelijke notatie gaat toepassen. Je kan met deze functie integers met een lengte van circa 400 cijfers omzetten. De lengte van het resultaat wordt dan wel meer dan 1300 enen en nullen.

De werking van deze functie is ook anders dan die van Dec2Bin.

Bij Dec2Bin wordt iedere iteratie de maximale macht van 2 bepaald en daarmee wordt de waarde van een macht van 10 berekend, waarna deze waarde bij de uitkomst van de vorige iteratie wordt geteld.

In deze Dec2Binary wordt eerst de maximum binary digit berekend, waarna van ieder minder significant bit de waarde (0 of 1) wordt bepaald. Deze functie is daarom enigszins trager dan Dec2Bin, maar heeft als voordeel dat je geen zorgen hebt over de weergave.


Top