Convertire un numero da Decimale in Binario: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
Nessun oggetto della modifica
 
(16 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Per convertire un numero da Decimale in rappresentazione binaria, sono possibili almeno tre modalità.
Per convertire un numero da Decimale in rappresentazione binaria, sono possibili alcune modalità.
==Uso della funzione "Bin()"==
Come è noto, si può far uso agevolmente dell'apposita [[Bin$|funzione Bin()]]:
Public Sub Main()
  Print <FONT Color=red>Bin</font>(1000, 16)
End




===Uso della funzione ''Bin()'' di Gambas===
==Uso della funzione "Base()"==
Come è noto, si può far uso agevolmente dell'apposita [[Bin$|funzione Bin()]].
Si può far uso anche della funzione "Base()", la quale restituisce la rappresentazione stringa di un numero in base definita nel 2° parametro, che deve essere un numero compreso fra 2 e 36.
 
  Public Sub Main()
 
===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
   Print Base(1000, 2)
  Dim bb As New Byte[]
  Dim s As String
 
  While n > 0
   
   
    bb.Add(CByte(Asc(CStr(n Mod 2))))
  End
    n \= 2
   
  Wend
  With bb
    .Reverse
    s = bb.ToString()
  End With
  Print "Risultato: "; s
 
'''End'''




o anche così:
==Uso della funzione esterna ''SDL_ltoa()'' del API di SDL2==
'''Public''' Sub Main()
E' inoltre possibile far uso della funzione esterna "ltoa()" del API di SDL2.
 
  Dim dml, res As Integer
 
<FONT Color=gray>' ''Il numero, di cui si calcola la rappresentazione binaria, deve essere senza virgola e positivo:''</font>
    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''"


In tal caso sarà necessario installare nel sistema e richiamare nell'applicazione Gambas la libreria condivisa: "''libSDL2-2.0.so.0.3000.7'' ".


Mostriamo un semplice esempio:
Mostriamo un semplice esempio:
  Library "libSDL2-2.0:0.2.0"
  Library "libSDL2-2.0:0.3000.7"
   
   
  <FONT Color=gray>' ''SDL_ltoa((long)value, string, radix)''</font>
  <FONT Color=gray>' ''char * SDL_ltoa(long value, char * string, int radix)''</font>
  Private Extern SDL_ltoa(value As Integer, strP As Pointer, radix As Integer)
  Private Extern SDL_ltoa(value As Integer, strP As Pointer, radix As Integer)
   
   
   
   
  '''Public''' Sub Main()
  Public Sub Main()
   
   
   Dim p As Pointer
   Dim p As Pointer
    
    
  p = Alloc(32)
  p = Alloc(64)
    
    
  SDL_ltoa(483647, p, 2)
  SDL_ltoa(123456789, p, 2)
    
    
  Print String@(p)
  Print String@(p)
    
    
  Free(p)
  Free(p)
   
   
  '''End'''
  End
 




====Riferimenti====
=Riferimenti=
https://fossies.org/dox/SDL2-2.0.3/SDL__string_8c.html
https://fossies.org/dox/SDL2-2.0.3/SDL__string_8c.html

Versione attuale delle 02:29, 31 ott 2024

Per convertire un numero da Decimale in rappresentazione binaria, sono possibili alcune modalità.

Uso della funzione "Bin()"

Come è noto, si può far uso agevolmente dell'apposita funzione Bin():

Public Sub Main()

 Print Bin(1000, 16)

End


Uso della funzione "Base()"

Si può far uso anche della funzione "Base()", la quale restituisce la rappresentazione stringa di un numero in base definita nel 2° parametro, che deve essere un numero compreso fra 2 e 36.

Public Sub Main()

 Print Base(1000, 2)

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 condivisa: "libSDL2-2.0.so.0.3000.7 ".

Mostriamo un semplice esempio:

Library "libSDL2-2.0:0.3000.7"

' char * SDL_ltoa(long value, char * string, int radix)
Private Extern SDL_ltoa(value As Integer, strP As Pointer, radix As Integer)


Public Sub Main()

 Dim p As Pointer
 
 p = Alloc(64)
  
 SDL_ltoa(123456789, p, 2)
  
 Print String@(p)
  
 Free(p)

End


Riferimenti

https://fossies.org/dox/SDL2-2.0.3/SDL__string_8c.html