Convertire un numero da Decimale in Binario
Da Gambas-it.org - Wikipedia.
Versione del 24 feb 2016 alle 12:11 di Vuott (Discussione | contributi)
Per convertire un numero da Decimale in rappresentazione binaria, sono possibili almeno tre modalità.
Indice
Uso della funzione Bin() di Gambas
Come è noto, si può far uso agevolmente dell'apposita funzione Bin().
Uso di apposito algoritmo
Volendo, è ovviamente possibile raggiungere il medesimo risultato con apposito codice, come ad esempio il seguente:
Public Sub Main() Dim n As Integer = 123456789 Dim bb As New Byte[] Dim s As String While n > 0 bb.Add(CByte(Asc(CStr(n Mod 2)))) n \= 2 Wend With bb .Reverse s = bb.ToString() End With Print "Risultato: "; s End
o anche così:
Public Sub Main() Dim dml, res As Integer ' Il numero, di cui si calcola la rappresentazione binaria, deve essere senza virgola e positivo: dml = 123456789 If dml < 0 Then Error.Raise("Impossibile calcolare il numero binario: il numero inserito è negativo !") If dml = 1 Then Print "00000001" Else Do res = dml Mod 2 Print res; If res = 0 Then dml /= 2 Else dml = (dml - 1) / 2 Endif Loop Until dml = 0 Endif End
Uso della funzione esterna SDL_ltoa() del API di SDL2
E' inoltre possibile far uso della funzione esterna ltoa() del API di SDL2.
In tal caso sarà necessario installare nel sistema e richiamare nell'applicazione Gambas la libreria dinamica e condivisa: "libSDL2-2.0.so.0.2.0"
Mostriamo un semplice esempio:
Library "libSDL2-2.0:0.2.0" ' SDL_ltoa((long)value, string, radix) Private Extern SDL_ltoa(value As Integer, strP As Pointer, radix As Integer) Public Sub Main() Dim p As Pointer p = Alloc(32) SDL_ltoa(483647, p, 2) Print String@(p) Free(p) End