Differenze tra le versioni di "Convertire un numero da rappresentazione binaria in decimale"

Da Gambas-it.org - Wikipedia.
Riga 12: Riga 12:
  
 
Mostriamo un paio di modalità per ottenere la conversione in Gambas di un numero da rappresentazione binaria in decimale.
 
Mostriamo un paio di modalità per ottenere la conversione in Gambas di un numero da rappresentazione binaria in decimale.
 
  
 
===1<SUP>a</sup> modalità===  
 
===1<SUP>a</sup> modalità===  
  '''Public''' Sub Button1_Click()   
+
  '''Public''' Sub Main()   
 
   
 
   
 
   Dim s As String   
 
   Dim s As String   
Riga 32: Riga 31:
 
   Print "Il corrispondente valore decimale è: "; l
 
   Print "Il corrispondente valore decimale è: "; l
 
   
 
   
 +
'''End'''
 +
 +
 +
===2<SUP>a</sup> 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'''
 
  '''End'''

Versione delle 11:29, 10 mar 2017

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 Main()  

 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()
 
 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