Division binaire [Résolu]

A voir également:Division binaireDivision en binaire - Meilleures réponses Division en base 2 - Meilleures réponses Division binaire. - Forum - Programmation La division binaire - Forum - Calculatrices La division binaire ✓ - Forum - Windows La division binaire - Forum - Windows Division successive binaire ✓ - Forum - Pascal

Bonjour,
...salut!!!
vous pouvez m'aidez??
....
comment peut on faire la division binaire suivante -->111110101100011 par le generateur 10011

que peut-on dire du message??

Forum

A voir également:Division binaireDivision en binaire - Meilleures réponses Division en base 2 - Meilleures réponses Division binaire. - Forum - Programmation La division binaire - Forum - Calculatrices La division binaire ✓ - Forum - Windows La division binaire - Forum - Windows Division successive binaire ✓ - Forum - Pascal

Web: www.shapebootstrap.net

7 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,

La division en binaire marche comme dans toute autre base y compris la base 10. Effectivement ça ne parait pas immédiat.

Il y a un petit exemple animé là: (2ème section)
Exemple

Le principe général est le suivant (Il me semble que tu aies un cas spécifique vu les termes employés, je garderai les miens tels que:
Dividende = Diviseur * quotient + reste, soit pour 25 / 4 : 25 = 4 * 6 + 1)

En binaire:
25 = (11001)2
4 = (100)2
  11001 | 100        | ------        |  

On prend le nombre de chiffre nécessaire pour la première division
  ___  11001 | 100             | ------             |   

Naturellement on pose un 1 en quotient puis on fait la soustraction 110 - (1* 100)
  ___  11001 | 100             | ------             | 1  

ce qui donne
(J'expliquerai plus bas comment je fait mes soustractions vu que je n'ai jamais su faire faire la méthode normale/humaine, ce cas est naturel)
  ___  11001 | 100  010     | ------             | 1  


On abaisse un chiffre, ici un zéro
  11001 | 100  0100   | ------             | 1  

et on recommence tant que tous les chiffres n'ont pas étés abaissés
  11001 | 100  0100   | ------             | 11  

on fait la soustraction
  11001 | 100  0100   | ------    000   | 11  


on abaisse le chiffre suivant
  11001 | 100  0100   | ------    0001 | 11  

celui ci "y va" zéro fois, on pose un zéro dans le quotient et on abaisse le chiffre suivant (mais il n'y en a plus donc c'est fini)
  11001 | 100  0100   | ------    0001 | 110  

on trouve bien 11001 = 100 * 110 + 1


/!\ Il me semble bien que la division binaire applicable au nombres est différente de la division utilisée dans les calcul de CRC par exemple. Dans les division des calculs de CRC telle celle fournie dans le lien de lami20j, la soustraction est faite sans retenue (soit équivalente à un xor) et nécessite un ajouts de plusieurs zéro au dividende. (Je ne sais lus comment est déterminé ce nombre de zéro par contre)


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

Je mets ici comment je fais mes soustractions (oubliant tout le temps cette stupide table...)

par exemple (tout à fait au hasard) : 11111 - 10011 L'exemple est bête et immédiat mais bon...
11111 - 10011 = 01100

Je prend le nombre à soustraire 10011 et je prends son complément à 2.
(Dans toute base B on considère généralement les opérations complément à B et le complément à B-1)

Le complémentaire à 9 dans la base 10 de 4 est 5 ( 9 - 4 = 5 )
Le complémentaire à 10 dans la base 10 de 4 est : Le complémentaire à 9, plus 1. Soit (9 - 4 + 1 = 6)
(Le complément est l'opération et le complémentaire son résultat)

Pour les nombres plus grands (Attention au nombre de chiffres considérés !!!)
C10( 12345 ) = C9( 12345 ) + 1 = 87654 + 1 = 87655

Voilà l'erreur commune:
C10( 00012345 ) = C9( 00012345 ) + 1 = 99987654 + 1 = 99987655
Il faut impérativement savoir le nombre de chiffre sur lequel on fait l'opération car les 0 implicites sont à prendre en compte!

Bon, pourquoi tout ça ?
Parce qu'en informatique les choses sont jolies et : A - B = A + C2( 2 )

en reprenant notre exemple du début:
11111 - 10011 = 11111 + C2( 10011 ) = 11111 + 01101 = 01100
En base deux on dit aussi que e complément à 2 d'un nombre s'obtient en inversant tous les chiffres (en partant de la gauche jusqu'au dernier 1 (exclus) à droite) C2( 000110011001100 ) = 111001100110100
     |11111  +|01101  ---------   1|01100
Et on retire le 1 généré par la retenu car il dépasse le nombre max de chiffres de nos deux nombres (max aussi considéré pour savoir sur combien de chiffre réaliser le complément à 2)

Ainsi 11111 - 1 = 11111 + C2( 00001 ) = 11111 + 11111 = 11110 en retirant là encore la retenue finale qui dépasse.

J'utilisais cette méthode dès lors que les nombres m'obligeaient à faire 0 - 1 quelque part, tels

101010 - 010110 = 101010 + C2( 010110 ) = 101010 + 101010 = 010100
     |101010  +|101010  --------------   1|010100  

Voilà, c'est un peu loin tout ça, j'espère ne pas avoir dit de bourde ^^

M.

Edit. Quelle horreur, il a bouffé tous les espaces et ruiné l'alignement dans les divisions v_v (Grumph)
(Comment ça "grumph est pas dans le dico ?)

Dire « Merci » 40

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60447 internautes nous ont dit merci ce mois-ci

Reply
réponses:
  • auteur

    C'est bien pour les balises ;-))
    En revanche si je peux me permettre, on les utilises en général pour le code et dans ton cas pour les divisions, les explications tu peux les laisser en normal ;-))

  • auteur

    mérci pour votre support

    tu peux nous donner un autre exemple pour mieux comprendre ??
    le cas d'une division binaire un peu long

  • auteur

    Parfaite , merci beaucoup mes amis

  • auteur

    Merci beaucoup pour cette information

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Quelle horreur, il a bouffé tous les espaces et ruiné l'alignement dans les divisions
il fallait utiliser les balises code

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Salut,

regarde ici http://dvsoft.developpez.com/Articles/CRC/#L4

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

bonjour il y a un moyen très simple de passer de décimal ( base 10 ) en binaire ( base 2 ).
si nous avons 242 décimal sa nous donne : en binaire


242/2 = 121 il reste 0
121/2 = 60 il reste 1
60/2 = 30 il reste 0
30/2 = 15 il reste 0
15/2 = 7 il reste 1
7/2 = 3 il reste 1
3/2 = 1 il reste 1
1/2 = 0 il reste 1

On prend tous les reste et on les met l'un a la suite de l'autre.

Donc 242 en décimal donne 11110010 en binaire.

Simple, on apprend sa au lycée en 2em année.

Reply
réponses:
  • auteur

    ton post est est hors sujet, on ne parle pas de passer de décimal a binaire, mais de diviser deux nombres binaires ; ce qui est utile dans les créations de programmes liés a la programmation informatique. il existe d autre solution pour passer en binaire. on peut décomposer le nombre avec des puissance de 2 comme 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, ... .

    exemple : 221.
    221 = 1 x 128 + 1 x 64 + 0 x 32 + 1 x 16 + 1 x 8 + 1 x 4 + 0 x 2 + 1 x 1

    donc 221 en décimal équivaut a 1101 1101 en binaire

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

^^
mercii "Mahmah".et aussi pour "lami20j" ^_^ ..maintenant c'es tout compris ..
!!^_^!!

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

slt je vx savoir comment on fait la division de nobre binaire

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

avec plaisir mon amis je ne comprend pas clairement les solutions bien.
Je veux que la division normal du nombre 100011 sur le nombre 1010 justement

100011 | 1010
| ------
|
/
merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii­iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii­iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii­iiiiiiiiiiiiiiiiiiiiiiiiiiiiii

Reply

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed