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

Mathématiques Discussion :

Besoin d'aide avec Modulo


Sujet :

Mathématiques

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2019
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2019
    Messages : 43
    Par défaut Besoin d'aide avec Modulo
    Bonjour a tous,

    j'ai besoin d'une variable qui peut prendre 256 valeurs, de 0 à 255.

    J'ai vérifié avec ce code et ça fonctionne bien.
    Lorsque "a" depasse 255, "a" redémarre à zéro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim a As Short
            Dim b As Short
            Dim i As Short
     
            a = 0
            For i = 0 To 1000
                b = a Mod 256
                Me.ListBox1.Items.Add(b)
                a = a + 1
            Next i
    Au lieu de l'incrémenter, j'ai aussi besoin de lui ajouter une valeur qui peut parfois
    dépasser 256. Avec ce code ça fonctionne aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim a As Short
            Dim b As Short
     
            a = 0
            a = a + 513
            b = a Mod 256
    La variable doit se comporter un peu comme un tableau de 256 valeurs qui bouclerait
    sur lui meme, "b" étant son pointeur.

    Quand il s'agit d'augmenter sa valeur, ça semble bien fonctionner.
    J'aurais aimé pouvoir faire la meme chose dans l'autre sens,
    mais quand il s'agit de diminuer sa valeur, j'obtient des nombres négatifs
    et plus rien ne fonctionne.

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 304
    Billets dans le blog
    48
    Par défaut
    Bonsoir,


    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    a = 2
     
    a = a - 5
     
    b = (a Mod 256 + 256) Mod 256  ' Résultat : b = 253

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 248
    Par défaut
    Mais ça ne fonctionnera pas pour des valeurs plus embêtantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a = 2
    a = a - 5 - 512 
    b = (a Mod 256 + 256) Mod 256   ' Ici, a est négatif, donc mod va encore se planter.

    Du coup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while a < 0
       a= a + 256000      ' J"ajoute un grand multiple de 256, autant de fois que nécessaire pour n"avoir que des nombres positifs.  Et ça va plus vite que si on ajoutait seulement 256 à chaque étape.
    end
    b = a mod 256
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 638
    Billets dans le blog
    67
    Par défaut
    Bonjour,

    A noter que Python intègre déjà cette formule avec son modulo "%" contrairement à VBA ou d'autres langages.
    Meilleurs vœux pour la nouvelle année !

    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  5. #5
    Invité
    Invité(e)
    Par défaut
    j'ai besoin d'une variable qui peut prendre 256 valeurs, de 0 à 255.
    Comme 256 est de base puissance 2, il est possible de remplacer l'opérateur mod par And 255 c'est plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    a = a - 1
     
    b = a And &HFF

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2019
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2019
    Messages : 43
    Par défaut
    Merci pour toutes vos réponses
    Je vais garder la solution proposé par Mist2024, car elle fonctionne super bien.
    Encore merci à tous

  7. #7
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 300
    Par défaut
    Bonjour

    J'ai envie de rappeler, pour la culture générale, que la soustraction n'existe pas en binaire. On ajoute le complément à 1 et on ajoute 1. Exemple :
    12810 - 6310 = 100000002 - 001111112
    12810 - 6310 = 100000002 + 110000002 + 1
    12810 - 6310 = 010000012
    12810 - 6310 = 6510

    La solution de Mist2024 est formidable. Mais tu sors de l'espace des valeurs possibles, pour y retourner par la contrainte. Si tu veux te cantonner à 256 valeurs, médite l'exemple ci-dessus.

    Note: la retenue est passée à la trappe.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  8. #8
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 638
    Billets dans le blog
    67
    Par défaut
    Bonjour,

    Sujet très instructif et déjà résolu. J'ai aussi un peu de mal avec le calcul binaire, mais si on utilise un mécanisme d'incrémentation/décrémentation ..

    1) Si on prend pour simplifier un chiffre décimal c (de 0 à 9) :

    Incrémentation de 1 du chiffre c :

    Décrémentation de 1 :

    -------------

    2) Si on prend maintenant 8 bits (base 256, de 0 à 255) et en partant de b=0 ou de b dans [0,255] :

    Incrémentation de 1 :

    Décrémentation de 1 :

    ou bien :

    avec &HFF=255 et apparemment And &HFF permet à b de rester entre 0 et 255.

    Si ça peut aider..
    Meilleurs vœux pour la nouvelle année !

    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin d'aide avec Regexp::Assemble
    Par mobscene dans le forum Modules
    Réponses: 5
    Dernier message: 11/04/2007, 13h39
  2. [ASA] J'ai besoin d'aide avec sybase et vb6 svp !!
    Par tibo830 dans le forum SQL Anywhere
    Réponses: 7
    Dernier message: 12/05/2006, 11h09
  3. Besoin d'aide avec TinyXML
    Par Clad3 dans le forum Bibliothèques
    Réponses: 5
    Dernier message: 15/08/2005, 19h20
  4. Réponses: 2
    Dernier message: 29/08/2003, 18h52
  5. Besoin d'aide avec postgresql sous windows NT
    Par Chihuahua dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/07/2003, 09h29

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