Differenze tra le versioni di "Convertire un numero da rappresentazione binaria in decimale"
Da Gambas-it.org - Wikipedia.
Riga 11: | Riga 11: | ||
− | + | Mostriamo un paio di modalità per ottenere la conversione in Gambas di un numero da rappresentazione binaria in decimale. | |
+ | |||
+ | |||
+ | ===1<SUP>a</sup> modalità=== | ||
'''Public''' Sub Button1_Click() | '''Public''' Sub Button1_Click() | ||
Riga 30: | Riga 33: | ||
'''End''' | '''End''' | ||
+ | |||
+ | |||
+ | |||
+ | ===2<SUP>a</sup> modalità=== | ||
+ | '''Public''' Sub Main() <SUP>[[[#Note|nota 1]]]</sup> | ||
+ | |||
+ | Dim decimale As Integer | ||
+ | Dim i, bit As Byte | ||
+ | Dim binario As String | ||
+ | |||
+ | binario = "101110011000110" | ||
+ | |||
+ | For i = Len(binario) To 1 Step -1 | ||
+ | bit = CByte(Mid$(binario, i, 1)) | ||
+ | If bit = 1 Then decimale += 2 ^ (Len(binario) - i) | ||
+ | Next | ||
+ | |||
+ | Print decimale | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | =Note= | ||
+ | [1] Questo codice è stato proposto dai membri [http://www.gambas-it.org/smf/index.php?action=profile;u=1249 Gianluigi] e [http://www.gambas-it.org/smf/index.php?action=profile;u=1038 TopFuel] del forum www.gambas-it.org . |
Versione delle 17:03, 21 nov 2016
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
Mostriamo un paio di modalità per ottenere la conversione in Gambas di un numero da rappresentazione binaria in decimale.
1a modalità
Public Sub Button1_Click() Dim s As String Dim bb As Byte[] Dim j As Byte Dim l As Long s = InputBox("Immetti un numero in formato binario:") 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() [nota 1] Dim decimale As Integer Dim i, bit As Byte Dim binario As String binario = "101110011000110" For i = Len(binario) To 1 Step -1 bit = CByte(Mid$(binario, i, 1)) If bit = 1 Then decimale += 2 ^ (Len(binario) - i) Next Print decimale End
Note
[1] Questo codice è stato proposto dai membri Gianluigi e TopFuel del forum www.gambas-it.org .