Convertir un entier en somme des carrés de 2 plus en binaire

Bonjour à tous,

J’aimerais réaliser une conversion entre un nombre entier et sa correspondance en somme des carrés de 2 plus en binaire, et vis versa.

Si je saisi, dans une cellule le nombre 7, j’obtiens :

7 = 20+21+22 = 111

Et si je saisi 111, j’obtiens :

111 = 20+2[Sup]1[/Sup]+2[Sup]2[/Sup] = 7

Merci d’avance.

Bonjour,

=DECBIN(A1)
=BINDEC(B1)

Bonjour i20100,

Mais en essayant de convertir le nombre 600 avec DECBIN(), j’obtiens une erreur #NOMBRE!

Bonjour à tous,

Ça s’arrête a 511 (11111111).

Ce qui est écrit dans l'aide .....

Crdlmt

re,

au delà de la limite indiquée dans l'aide sur cette fonction,

Si nombre < -512 ou si nombre > 511, DECBIN renvoie la valeur d’erreur #NOMBRE!

tu pourrais utiliser des fonctions perso, (cette exemple est pour les nombres positif seulement)

Function P_DECBIN(n As Integer)
For i = 16 To 0 Step -1
    If v = n Then
      P_DECBIN = b
      Exit Function
    Else
      If v + (2 ^ i) <= n Then
         v = v + (2 ^ i)
         b = b & 1
      Else
         b = b & 0
      End If
    End If
Next i
End Function

Function P_BINDEC(t As String)
For i = Len(t) To 1 Step -1
    v = Left(Right(t, i), 1)
    If v = "1" Then P_BINDEC = P_BINDEC + (2 ^ (i - 1))
 Next
End Function

Bonsoir,

à tester :

Function DECtoBIN(ByVal nbDec As Variant, Optional nbCar As Variant) As String
  Application.Volatile True 
    nbDec = Int(CDec(nbDec))
     Do While nbDec <> 0
        DECtoBIN = Format$(nbDec - 2 * Int(nbDec / 2)) & DECtoBIN
        nbDec = Int(nbDec / 2)
    Loop
     If Len(DECtoBIN) > nbCar Then
        DECtoBIN = "N/A"
    Else
        DECtoBIN = String(nbCar - Len(DECtoBIN), "0") & DECtoBIN
    End If
 End Function

Bonsoir i20100, DjiDji, Oxydum,

Merci pour vos reponses.

Je vais essayer de comprendre le code proposé.

Entre temps, j'ai réussi à développer un petit exemple, en pièce jointe.

Bonsoir i20100, oxydum, le forum,

Voici un test des fonctions proposées.

P_DECBIN => Donne toujours 0

P_BINDEC => Bon

DECtoBIN => Erreur (#Valeur)

re,

j'ai modifié la function P_DECBIN

à tester,

Function P_DECBIN(n As Integer) As String
For i = 16 To -1 Step -1
    If v = n And i = -1 Then
      P_DECBIN = b
    Else
      If v + (2 ^ i) <= n Then
         v = v + (2 ^ i)
         b = b & 1
      Else
         b = b & 0
      End If
    End If
Next i
End Function
Rechercher des sujets similaires à "convertir entier somme carres binaire"