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

C Discussion :

division en C


Sujet :

C

  1. #1
    Nouveau membre du Club Avatar de bj303931
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 75
    Points : 27
    Points
    27
    Par défaut division en C
    Bonjour, je ne comprend pas la division en C.

    Ma réflexion: Procédons par récurrence:

    4/2=2 et 2=10 en binaire, 4=100 en binaire
    6/2=3 et 6=110 en binaire
    8/2=4 et 8=1000 en binaire, 4=100 en binaire
    8/4=4...
    Bref on voit qu'il y a des décalage de la sorte 2^n pour 2,4,8,16 en diviseur.

    Il nous reste donc 3,5,6,7,9.
    Extrayons les multiples de 3: 3,6 et 9 et travaillons sur 3.

    6/3=2; 6=110; 2=10
    9/3=3; 9=1001; 3=110
    15/3=5 15=1111

    Je ne vois aucune relation. Donc j'arrive pas à coder la division. HELP!

  2. #2
    Expert éminent
    Avatar de Pyramidev
    Homme Profil pro
    Développeur
    Inscrit en
    Avril 2016
    Messages
    1 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 469
    Points : 6 102
    Points
    6 102
    Par défaut
    Bonjour.

    D'après ce que j'interprète de ton message, tu as un exercice dans lequel il faut réimplémenter la division euclidienne en C à partir d'opérations sur les bits.

    Alors, voici un indice :
    A l'école primaire, pour pratiquer une division euclidienne en base 10, on applique à la main un certain algorithme dont voici un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      74 | 3
      ---+---
    - 6  | 24
      -  |
      14 |
    - 12 |
      -- |
       2 |
    On peut adapter cet algorithme pour faire une division euclidienne en binaire.
    Par exemple, voici la division euclidienne de 74 par 3 en binaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      1001010 | 11
      --------+------
     - 11     | 11000
       --     |
        11    |
      - 11    |
        --    |
         0010 |
    Étape par étape, les opérations qui interviennent sont des décalages de bits et des soustractions.
    Je te laisse essayer de traduire cet algorithme sous forme de code.

  3. #3
    Membre actif
    Étudiant
    Inscrit en
    Juin 2010
    Messages
    70
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2010
    Messages : 70
    Points : 204
    Points
    204
    Par défaut
    et tu as remarqué que quand le diviseur est une puissance de 2 il suffit de décaler les bits dans le sens le moins significatif.

    35/6 = 1+(35-6)/6 = 2+ (29-6)/6 = ... = 5 + 5/6
    Tu as le quotient et le reste
    (sans opération binaire)

    une autre solution pour 35/6
    (cette fois çi avec un peu de "binaire caché")
    (1,2,4,8,16,32,etc...)

    (reste=35,quotient=0) : 6,12,24,48
    (rest=11,quotient=4) : 6,12
    (reste=5,quotient=5) : 6
    fin

    Il y a moyen de s'amuser

Discussions similaires

  1. [TP]Division de longs entiers
    Par Pebg dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 14/12/2003, 12h10
  2. [LG]a divise par b
    Par backsync dans le forum Langage
    Réponses: 8
    Dernier message: 22/10/2003, 21h37
  3. division de "double" par "0"
    Par ickis dans le forum C
    Réponses: 14
    Dernier message: 31/08/2003, 19h09
  4. Fonction divisant argument de type inconnu
    Par Nasky dans le forum C
    Réponses: 9
    Dernier message: 29/07/2003, 00h32
  5. probleme avec une division par zéro
    Par jcharleszoxi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/03/2003, 18h14

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