Convertire un numero da rappresentazione binaria in decimale

Da Gambas-it.org - Wikipedia.

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 = "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