Pour les matheux

FGE72

XLDnaute Nouveau
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
 

mécano41

XLDnaute Accro
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
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Pour les matheux

Bonjour FGE72, mécano41,

Bonjour si en A1 la somme, si en C1 la puissance désirée de 2 (ex: C1=3 pour 8) alors essayer cette formule:
Code:
=EST.IMPAIR(ENT($A$1/2^C1))
 

Pièces jointes

  • FGE72- Somme Puiss2 v1.xls
    18 KB · Affichages: 35
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Re : Pour les matheux

Bonsour® mapomme ;)

Pour le fun, alors... :cool:

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: 38
  • Capture.JPG
    Capture.JPG
    33.9 KB · Affichages: 37
Dernière édition:

Discussions similaires

Réponses
13
Affichages
458
Réponses
9
Affichages
205

Statistiques des forums

Discussions
312 488
Messages
2 088 843
Membres
103 972
dernier inscrit
steeter