Differenze tra le versioni di "Convertire un numero da rappresentazione binaria in decimale"
Riga 1: | Riga 1: | ||
− | + | =Introduzione generale= | |
+ | In via generale, per convertire un numero, espresso in formato a rappresentazione binaria, nella corrispondente rappresentazione ''decimale'', bisogna moltiplicare le cifre del numero binario per le potenze decrescenti di 2, e successivamente sommare i risultati. | ||
Convertiamo, per esempio il numero binario 10101010: | Convertiamo, per esempio il numero binario 10101010: | ||
Riga 11: | Riga 12: | ||
− | + | =Uso della funzione ''Val( )''= | |
+ | Per convertire agevolmente un numero da rappresentazione binaria in rappresentazione decimale, si potrà utilizzare la funzione "''Val( )''" inserendo nel suo unico parametro in formato stringa della rappresentazione binaria pre con i caratteri "<FONT color=#B22222>&H</font>" | ||
+ | |||
+ | Esempio pratico: | ||
+ | '''Public'' Sub Main() | ||
+ | |||
+ | Print Val(<FONT color=#B22222>&H</font>00000111</font>") | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | =Uso di appositi algoritmi= | ||
+ | Si potranno utilizzare anche degli specifici algoritmi. | ||
==Uso delle sole risorse di gambas== | ==Uso delle sole risorse di gambas== |
Versione delle 09:26, 5 ott 2017
Indice
Introduzione generale
In via generale, per convertire un numero, espresso in formato a rappresentazione binaria, nella corrispondente rappresentazione decimale, bisogna moltiplicare le cifre del numero binario per le potenze decrescenti di 2, e successivamente sommare i risultati.
Convertiamo, per esempio il numero binario 10101010:
(1 * 27) + (0 * 26) + (1 * 25) + (0 * 24) + (1 * 23) + (0 * 22) + (1 * 21) + (0 * 20) = = (1 * 128) + (0 * 64) + (1 * 32) + (0 * 16) + (1 * 8) + (0 * 4) + (1 * 2) + (0 * 1) = = 128 + 0 + 32 + 0 + 8 + 0 + 2 + 0 = = 170
Uso della funzione Val( )
Per convertire agevolmente un numero da rappresentazione binaria in rappresentazione decimale, si potrà utilizzare la funzione "Val( )" inserendo nel suo unico parametro in formato stringa della rappresentazione binaria pre con i caratteri "&H"
Esempio pratico:
'Public Sub Main() Print Val(&H00000111</font>") End
Uso di appositi algoritmi
Si potranno utilizzare anche degli specifici algoritmi.
Uso delle sole risorse di gambas
Con l'uso delle sole risorse di Gambas possiamo adottare almeno un paio di modalità.
1a modalità
Public Sub Main() Dim s As String Dim bb As Byte[] Dim j As Byte Dim l As Long s = "01011010010110100101101001011010" bb = Byte[].FromString(s).Reverse() For j = 0 To bb.Max l += Val(Chr(bb[j])) * (2 ^ j) Next Print "Il corrispondente valore decimale è: "; l End
2a modalità
Public Sub Main() Dim binario As String Dim decimale As Long Dim pos As Byte binario = "01011010010110100101101001011010" Repeat decimale += Val(Mid(binario, pos + 1, 1)) * (2 ^ pos) Inc pos Until pos = Len(binario) Print decimale End
Uso della funzione esterna strtol( )
La funzione strtol( ), dichiarata nel file header "/usr/include/stdlib.h", converte un numero da rappresentazione stringa in un valore di tipo "long int", come definito nel file header "/usr/include/limits.h"
Dunque si passerà a detta funzione esterna una stringa contenente la rappresentazione binaria del valore da convertire, avendo cura di porre il terzo parametro della funzione medesima a 2 (base binaria).
Mostriamo un semplice esempio:
Library "libc:6" ' long int strtol (const char *__restrict __nptr, char **__restrict __endptr, int __base) ' Convert a string to a long integer. Private Extern strtol(__nptr As String, __endptr As String, __base As Integer) As Long Public Sub Main() Dim binario As String Dim l As Long ' Come esempio passiamo la rappresentazione binaria del valore massimo supportato dal tipo "Long" nativo di Gambas: 9223372036854775807 binario = "111111111111111111111111111111111111111111111111111111111111111111" l = strtol(binario, Null, 2) Print l End