IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Division Euclidienne en Binaire


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 11
    Par défaut Division Euclidienne en Binaire
    Salut !

    SVP je cherche un code (vba de préférence pour aller dans mes macros excel)
    permettant de faire la division binaire de 2 "mots" binaires, et prenant en entrée des string.

    Ex: Function Division_Binaire(byval S1 as string, byval S2 as string) as String

    Le but c'est de connaitre le reste de la division euclidienne d'une chaîne binaire par une autre.

    Je suis quasi certain qu'un code aussi basique que çà a déjà été produit, mais mes aptitudes en vba sont limitées,
    et je ne voudrais pas prendre des heures (voire des jours) à rentrer dans la programmation de ce truc s'il existe déjà.

    J'ai beau chercher depuis quelques bonnes heures déjà et je ne trouve toujours rien.
    J'espère que qqn ici aura qqch à me proposer.

    Merci infiniment de votre assistance, j'ai vraiment besoin de ce truc pour avancer sur mon projet

    @+

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Le plus simple est probablement de transposer les deux en décimal, de calculer ce reste (modulo) à re-transposer en binaire.

    Et donc : simple formule Excel utilisant les fonctions BINDEC, DECBIN et MOD

  3. #3
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 11
    Par défaut
    Citation Envoyé par unparia Voir le message
    Bonjour
    Le plus simple est probablement de transposer les deux en décimal, de calculer ce reste (modulo) à re-transposer en binaire.
    Merci beaucoup Unparia !

    Oui j'avais effectivement vu cette possibilité, mais le traitement doit se faire sans conversion, donc avec les mots binaires directement.
    Et ceci pour 3 raisons:
    _ La 1ère c'est que la fonction mod (a;b) sous vba ne fonctionne pas avec les GRANDS nombres (limités au type double en vba)
    _ La seconde, c'est que pour des nombres TRES GRANDS (==> donc on ne peut même plus utiliser le type double)
    on ne peut s'en sortir qu'en manipulant les nombres au travers de leur représentation en string
    _ La troisième, est que pour des nombres TRES TRES GRANDS, la durée d'exécution pour les opérations de conversion
    binaire-->décimal et décimal-->binaire est très très long

    En conséquence, pas d'autres choix que de faire toutes les opérations avec les nombres l'on connait déjà dans leur représentation binaire
    stockée comme une string.

    Merci encore d'avoir bien voulu m'aider.

    @+

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bien.

    Il s'agit donc, avant tout développement en code, d'établir l'algorithme nécessaire (à traduire ENSUITE en code).
    Quel est donc le tien (algo classique ou en langage naturel) ?

  5. #5
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 11
    Par défaut
    Citation Envoyé par unparia Voir le message
    Bien.

    Il s'agit donc, avant tout développement en code, d'établir l'algorithme nécessaire (à traduire ENSUITE en code).
    Quel est donc le tien (algo classique ou en langage naturel) ?

    Merci encore à toi Unparia pour l'intérêt et le temps que tu consacres à ma question.

    En fait dans mes recherches voici le genre d'algorithme que j'ai trouvé: https://sitelec.org/cours/abati/division_binaire.htm


    Mais avant de me lancer dans des heures de programmation, je cherche si quelque chose d'utilisable n'est pas déjà produit.

    En vba excel de préférence (sinon, même si c'est en C, je ferai l'effort de le re-écrire en vba plutôt que de partir de zéro
    avec toutes les possibilités de me tromper dans le source à développer ....)

    Merci

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour à tous,

    La troisième, est que pour des nombres TRES TRES GRANDS, la durée d'exécution pour les opérations de conversion
    binaire-->décimal et décimal-->binaire est très très long
    C'est vrai qu'avec des Strings c'est mieux ;-)

    Plaisanterie mise à part si 28 chiffres te suffisent tu as CDec()
    Pris sur feu Excelabo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function MOD2(Nombre As String, Diviseur As String) As String
    Dim Tmp
    Tmp = CDec(Nombre) / Diviseur
    MOD2 = Nombre - CDec(Left(Tmp, InStr(1, Tmp, _
    Application.International(xlDecimalSeparator)) - 1)) * Diviseur
    End Function
    Et si tu es destiné à devoir faire ta fonction tout seul, met-toi plutôt en quête d'un algorithme de division traitant par tranches.
    Par tranche de 16 bits par exemple, plutôt que bit à bit.
    eric

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    En fait j'ai rien compris!

    Tu cherche a faire un modulo d'un nombre a x milier de digit par y milier de digit

    X mod y ou alors x mod 10.

    String mod 97 par exemple c'est très facile.

    Donnes des précisions sur les deux terme.

Discussions similaires

  1. dépacement capacité (division euclidienne)
    Par Darksnakes dans le forum Débuter
    Réponses: 5
    Dernier message: 01/12/2008, 09h20
  2. Division euclidienne
    Par cixiii dans le forum R
    Réponses: 1
    Dernier message: 24/04/2008, 18h02
  3. Division euclidienne polynomiale (avec modulos)
    Par Batoche dans le forum Mathématiques
    Réponses: 5
    Dernier message: 18/12/2006, 14h03
  4. division euclidienne de polynôme
    Par gronaze dans le forum Mathématiques
    Réponses: 1
    Dernier message: 29/06/2006, 20h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo