• Initiateur de la discussion Initiateur de la discussion FGE72
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

FGE72

Guest
Bonjour à tous,

Je cherche à décomposer une somme de puissances de 2.
ex : 26 est la somme de 2+ 8 +16
Je voudrais tester que 2 est une composante de la somme aboutissant à 26, que 8 est également une composante de cette somme mais pas 3 ni 5...

Merci par avance,

François
 
Re : Pour les matheux

Bonjour,

Peut-être en convertissant ton nombre par DECBIN(..) s'il est <512

DECBIN(26) donne 11010. C'est du texte. En analysant ensuite par la droite, tu as les puissances successives de 2

DROITE(DECBIN(X),n) te dit si "2 puissance (n-1)" est multiplié par 0 ou par 1 dans la somme

Cordialement
 
Re : Pour les matheux

Bonsour® mapomme 😉

Pour le fun, alors... 😎

VB:
Public Function DecomposeBase2(dTarget As Double, Optional ByVal detail As Boolean) As String
' usage :
'=DecomposeBase2(A1) ===> format binaire 
' 2629====>	101001000101
'=DecomposeBase2(A2;VRAI) ===> détail puissances de 2
'22654====>	16384 +4096 +2048 +64 +32 +16 +8 +4 +2

  Const sBASE As String = "01"
  Dim sOut As String, x As Integer, i As Integer, temp
  Dim Residu As Double
  '--------------
 sOut = ""
  dTarget = Abs(dTarget)
  '--------------
 Do
        Residu = dTarget - (2 * Int((dTarget / 2)))
        sOut = Mid$(sBASE, Residu + 1, 1) & sOut
        dTarget = Int(dTarget / 2)
  Loop While (dTarget > 0)
  '----------------------------------
 If detail = True Then
         temp = ""
         x = Len(sOut)
         For i = 0 To Len(sOut) - 1
              '------ valeur puissance de 2 :32768 +4096 +128 +16 +4 +2
                If Mid(sOut, x - i, 1) = 1 Then temp = " +" & (2 ^ i) & temp
              '-------puissance de 2 : 2^13 +2^12 +2^11 +2^10 +2^7 +2^5 +2^1
              ' ----If Mid(sOut, x - i, 1) = 1 Then temp = " +2^" & i & temp
         Next
         DecomposeBase2 = Mid(temp, 3, 9 ^ 9)
  Else
         '--------- valeur binaire : 11101101001
         DecomposeBase2 = sOut
  End If
  '--------------
  End Function

usage :
=DecomposeBase2(A1)
=DecomposeBase2(A2;VRAI)
Capture.JPG
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    33.9 KB · Affichages: 44
  • Capture.JPG
    Capture.JPG
    33.9 KB · Affichages: 43
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
12
Affichages
729
Réponses
2
Affichages
149
Réponses
8
Affichages
218
Retour