
Dim binario(6) As Boolean
Dim indice, contatore, partenza As Integer
contatore = 32
partenza = Range("richiesta").Value
' primo passo trasformo il valore inserito (max 63= tutto acceso) e accendo i rispettivi
' valori boleani, secondo la codifica binaria:
' 1 = 1; 2 = 2; 3 = 4; 4 =8; 5 = 16; 6 = 32
' es. valore inserito è 3, allora accendo 1 e 2 perchè 1+2 fa 3
' es. valore inserito è 8, alla accendo 4 perchè corrisponde all'8
' es. valore inserito è 15, allora accendo 4,3, 2, 1 perchè 8 +4 +2+1 = 15
For indice = 6 To 1 Step -1
If partenza >= contatore Then
binario(indice) = True
partenza = partenza - contatore
End If
If partenza = 0 Then Exit For ' sono arrivato prima alla fine
contatore = contatore / 2 ' contatore è potenza di 2
Next indice |
arr = Split(stringa, "-") per avere nell'array "arr" tutti gli elementi della stringa binaria già pronti all'uso.
'converte un numero decimale nel corrispondente binario
Function DecToBin(num As Long, size As Integer) As String
Dim i As Long, bin As String
For i = 0 To size - 1
bin = IIf(num And 2 ^ i, "1", "0") + bin
Next
DecToBin = bin
End Function
'converte un numero binario (stringa) nel corrispondente decimale
Function BinToDec(bin As String) As Long
Dim total As Long, power As Long, i As Long
power = Len(bin) - 1
For i = 1 To Len(bin)
If Mid(bin, i, 1) = "1" Then total = total + 2 ^ power
power = power - 1
Next
BinToDec = total
End Function |
BINARIO.DECIMALE() DECIMALE.BINARIO() |
?Application.WorksheetFunction.Bin2Dec("1001")
9
?Application.WorksheetFunction.Dec2Bin("9")
1001
|
