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

Da Gambas-it.org - Wikipedia.
Riga 11: Riga 11:
  
  
Per ottenere la conversione in Gambas potremo utilizzare questo codice:
+
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>&#91;[[#Note|nota 1]]&#93;</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 .