Documente Academic
Documente Profesional
Documente Cultură
1 sur 13
http://www.siteduzero.com/tutoriel-3-155460-les-calculs-en-binaire.html
Par
distopia et
Sergeswi
Ce cours n'est pas indispensable pour programmer avec un langage comme le C ou le Java mais si un jour vous comptez utiliser des micro-contrleurs ou simplement raliser
une application en assembleur, ces connaissances pourront vous tre utiles.
Plan de Char
Ainsi un char qui est (en thorie) cod sur 8 bits pourra avoir 256 (28) valeurs diffrentes.
Ah ! Un dtail (important) : si le char est employ en tant que unsigned (variable toujours positive), le bit 7 sert donner la valeur du nombre mais si on l'utilise en tant
que signed , ce bit sert donner le signe du nombre (0 signifie positif, 1 signifie ngatif).
Ainsi 1000 1111 est gal 143 si la variable est non-signe et -113 dans le cas contraire (si vous lisez la fin de cette partie, vous comprendrez comment je fais pour deviner a
23/11/2012 02:20
2 sur 13
http://www.siteduzero.com/tutoriel-3-155460-les-calculs-en-binaire.html
:)
).
- Par opposition, les variables grant les nombres virgule utilisent une partie des bits pour donner la valeur du nombre et le reste pour donner la position de la virgule.
Par exemple, pour un nombre cod sur 32 bits (float) :
Les bits 0 22 servent coder le nombre sans tenir compte de la virgule (3616.999 s'crit donc 3616999).
Les bits 23 30 servent donner l'exposant (la position de la virgule, quoi
;)
).
Le bit 31 sert prciser le signe.
Si vous tes curieux et que vous voulez en savoir plus : RTFM.
:p
Enfin, il faut savoir que ce tutoriel utilise deux notations pour indiquer les bases et les oprations.
La base d'un nombre est indique entre parenthses et en indice, cela permet d'viter toute confusion. Ainsi, 11(10) est le nombre 11 en dcimal et 11(2) est le nombre 11 en
binaire.
Les signes opratoires sont les symboles que l'on trouve sur le pav numrique du clavier. Ce sont le plus (+) pour l'addition, le moins (-) pour la soustraction, l'astrisque (*)
pour la multiplication et la barre oblique (/) pour la division. Cependant, avec l'utilisation de la balise math, le signe multiplicatif est la croix traditionnelle.
Code : zCode - Slectionner
<math>3_{(10)} \times 6_{(10)} = 18_{(10)}</math>
Exemple :
Pour le savoir, on a deux mthodes : une simple que vous allez aimer et une plus complique que vous utiliserez.
Voici la mthode simple.
On sait que
donc :
Soustraction de 1 par 0
Soustraction de 1 par -1
d'o
Si vous tes perdu, passez la partie suivante qui parle des additions et soustractions, cela sera peut-tre plus clair aprs.
a va, vous suivez ?
J'espre que oui, car voici la mthode plus complique !
23/11/2012 02:20
3 sur 13
http://www.siteduzero.com/tutoriel-3-155460-les-calculs-en-binaire.html
Attends ! Pourquoi utiliserait-on une technique plus dure si on connat celle-ci ? On ne va pas se compliquer la vie pour rien !
Excellente question ! Eh bien tout simplement parce que la mthode plus complique permet de travailler aussi bien sur des petits nombres que sur des grands. Non pas que cette
mthode ne puisse pas, mais essayez de trouver l'quivalent binaire de -19 de tte :
. Voil ! C'tait pas trop dur, avouez ! C'est juste un peu plus long.
Petit dtail
Voici un tableau reprsentant l'quivalent dcimal de la valeur des variables signes de type char.
Calcul 5
Comme les nombres ngatifs ont toujours un 1 comme bit de poids fort, ils sont reprsents au-dessus des nombres positifs dans ce tableau.
Vous constaterez ici que le 0 est considr comme un nombre positif, donc que ces derniers ne vont que jusqu' 127 tandis que les ngatifs atteignent -128.
Une autre particularit due cette faon de coder les nombres ngatifs est que si une variable atteint le maximum 127 pour un char et qu'elle est incrmente, elle passera
directement -128, alors que la mme chose pour une variable unsigned la fait repartir 0.
Essayez, vous verrez :
Code : C - Slectionner
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char k = 0;
do
{
printf("%ld\n", k);
k++;
}
while(k>=0);
printf("%ld\n", k);
//J'incrmente ma variable.
//Tadam !
return 0;
}
Bien entendu, ce problme peut aussi se retrouver dans les calculs si le rsultat dpasse la valeur maximale permise par la variable, faites donc attention !
Retour en haut
23/11/2012 02:20
4 sur 13
http://www.siteduzero.com/tutoriel-3-155460-les-calculs-en-binaire.html
Addition et soustraction
Passons maintenant aux calculs !
Ne vous en faites pas, on ne va faire que des choses simples, dj parce que je suis une bille en mathmatiques et ensuite parce que les processeurs ne valent pas mieux. (C'est dit
sans mchancet, hein !)
Ainsi, les seuls calculs que l'on va aborder seront l'addition, la soustraction, la multiplication et... la division !
Les additions
Commenons en douceur avec l'addition, que vous avez dj employe si vous avez fait des essais dans la partie prcdente.
Table de vrit
On va commencer par dfinir ce qui s'appelle une table de vrit .
Cette table de vrit est une liste des diffrents rsultats qu'un calcul utilisant un certain oprateur peut donner :
Calcul dcimal Rsultat dcimal Calcul binaire Rsultat binaire
Un petit rappel :
Lorsque vous faites ce calcul, vous savez que 9 plus 4 font 13. Vous mettez donc 3 en bas droite et vous gardez quoi ? Eh oui, une retenue.
d'aprs.
En binaire, c'est la mme chose :
Je vous rappelle qu'en binaire il n'y a que deux chiffres. La retenue arrive donc trs souvent, il faut pouvoir s'en sortir avec.
Exemple
On va faire un exemple :
En binaire :
Bit n 0 :
On commence facile.
donc on met le
. On
Voil, les additions sont finies. Ce n'tait pas si dur, n'est-ce pas ?
Les soustractions
23/11/2012 02:20
5 sur 13
http://www.siteduzero.com/tutoriel-3-155460-les-calculs-en-binaire.html
Table de vrit
Voyons d'abord la table de vrit :
Calcul dcimal Rsultat dcimal Calcul binaire Rsultat binaire
La deuxime ligne est un peu particulire. Je l'explique : quand vous tombez sur un chiffre qui doit se faire soustraire par un plus grand que lui, vous prenez une dizaine gauche du
chiffre pour pouvoir soustraire.
Par exemple, quand vous faites :
On a ainsi
Exemple simple
Un petit exemple pour mettre a en pratique.
Bit
Bit
Bit
Bit
n 0
n 1
n 2
n 3
:
:
:
:
Ce qui donne :
On vrifie :
! Nous n'avons pas eu le cas de l'emprunt de dizaine mais il va bien falloir faire un exemple plus compliqu.
On commence avec
. Vu que c'est impossible, on va aller emprunter une paire gauche. Donc cela donne
l'inscrit et hop, c'est fait.
Maintenant, le bit n 1 : on a un 1 qui s'est soustrait droite, donc il n'y est plus. On a donc
disparition du 1 est marque avec une paire en rouge : c'est le -1.
. On prend donc le
de gauche et a donne :
23/11/2012 02:20
6 sur 13
http://www.siteduzero.com/tutoriel-3-155460-les-calculs-en-binaire.html
. Si vous avez compris comment a marche, vous n'aurez pas de soucis avec les divisions !
Multiplication et division
Vous savez maintenant additionner et soustraire. Mais que pensez-vous de multiplier ou diviser des nombres... en binaire ?!
Multiplications
Table de vrit
En comparaison des soustractions, les multiplications en binaire sont trs simples.
Voici leur table de vrit :
Calcul dcimal Rsultat dcimal Calcul binaire Rsultat binaire
a a l'air simple, n'est-ce pas ? Cela est d la simplicit de la base 2. En effet, les seules multiplications effectuer sont par 0 ou par 1. Finis les mchants 8 fois 34 qu'on a pu
vous sortir au collge. Avec le binaire, tout est relativement plus simple.
En fait, ceci constitue la base mme des mathmatiques lmentaires (c'est vous dire). Pour tout nombre a :
et
La table de vrit est trs simple mais pour les calculs, il y a un dtail qui peut rduire nant votre multiplication si vous le ngligez. Il va donc falloir tre prudent.
Exemple
Essayons de multiplier 3 par 2 :
Allons-y :
Ne vous mprenez pas ! Ici ce sont bien deux nombres en binaire (un un et un zro) et pas deux dcimaux (onze et dix) mme si le calcul est exactement le mme !
Nos rsultats sont justes mais la diffrence entre ces deux calculs est que l'on ne les a pas effectus dans la
mme colonne (donc ils n'ont pas le mme exposant). C'est donc de ce dcalage qu'il faut se mfier.
En images, cela sera srement plus clair.
Et enfin, il suffit simplement d'additionner les rsultats en faisant attention ce sacr dcalage.
Constat
On peut remarquer que :
23/11/2012 02:20
7 sur 13
http://www.siteduzero.com/tutoriel-3-155460-les-calculs-en-binaire.html
Il y a une bonne raison pour laquelle cette mthode peut poser problme : cette technique sera plus complique pour une multiplication par 11 voire pire ! Imaginez devoir faire le
calcul suivant de tte :
Je vous conseille donc de garder notre mthode, le rsultat sera correct. Cependant, pour les multiples de 10, faire un calcul de tte reste trs ais.
Divisions
Principe de la division euclidienne
Ah ! le gros morceau !
Je ne mets pas de table de vrit, car dans ce cas je ne la trouve pas vraiment utile : on ne parle ici que de la division euclidienne, qui est en fait une suite de soustractions
(comme la multiplication est une suite d'additions, d'ailleurs).
De toute manire, les calculs en binaire utilisent les mmes mthodes que ceux en base 10, alors il suffit (en thorie) d'avoir t sage l'cole primaire pour pouvoir se dbrouiller.
Exemple
On va prendre un exemple pour illustrer :
.
On va dj le faire en dcimal (on commence doucement
). Je vous rappelle rapidement comment a marche : on veut savoir combien de fois rentre 5 dans 23 et combien il reste
la fin. Pour cela, on retranche 5 une fois, on met une petite barre pour compter une fois dans la zone de droite et ainsi de suite jusqu' ce qu'on atteigne un nombre trop petit pour
le soustraire par 5.
Si c'est le cas, bah... Vous n'aurez aucun mal le faire en binaire puisque c'est exactement la mme chose.
Ce qui donne :
Maintenant, il s'agit simplement d'enlever 5 jusqu' ce que le reste soit plus petit que 5, indiquer le reste, le nombre de fois o 5 est rentr dans 23... vous de jouer !
Correction
On corrige ? Je vous propose de le faire ensemble.
On soustrait 5, cela donne :
Simple soustraction, on n'a pas eu besoin de prendre une dizaine. Je ne veux pas m'tendre sur les oprations donc je les mets en secret pour ceux qui veulent.
Secret (cliquez pour afficher)
Bit n 0 :
Bit n 1 :
Bit n 2 :
23/11/2012 02:20
8 sur 13
http://www.siteduzero.com/tutoriel-3-155460-les-calculs-en-binaire.html
Bit n 3 :
Bit n 4 :
On vrifie :
On a russi ! On ajoute donc 1 au nombre de fois o 5 est rentr dans 23 et ainsi de suite.
Vous avez normalement d voir cette explication dans la partie sur les soustractions mais un exemple bien concret comme celui-ci ne vous fera pas de mal.
Voyons cela bit aprs bit :
Bit n 0 : a commence fort ! 0 - 1 ! Comme vous avez srement d le voir dans la partie prcdente, le 0 va devoir emprunter gauche un 1 pour pouvoir soustraire. Ainsi, ce sera
plus simple pour lui. On a donc :
.
Bit n 1 : on n'a pas trop le choix : le 0 soustrait un 0 et cela donne un 0.
Bit n 2 : si vous avez bien suivi, vous voyez que le bit n 2 est un 0 qui doit soustraire un 1. Il va donc pour cela prendre une paire (cela correspond une dizaine en dcimal)
gauche... Mais sa gauche, il y a un 0 !
On entre dans une vritable chane. Le 0 (bit n 2) va prendre une paire au 0 gauche (bit n 3) qui va lui mme prendre une paire
gauche (bit n 4).
Je vais maintenant vous donner une astuce qui vous rendra la vie plus facile. Arriv au bit n 2, oubliez les bits d'avant (0 et 1). Que voyez-vous ?
Ainsi il vous suffit d'inscrire le rsultat dans la colonne de dpart du calcul et le problme est rgl.
On vrifie que le rsultat obtenu est bien le bon :
Le calcul est trs simple mais il se peut que certains ne comprennent pas. Je fournis donc les calculs en secret :
Secret (cliquez pour afficher)
Bit
Bit
Bit
Bit
n 0 :
n 1 :
n 2 :
n 3 :
23/11/2012 02:20
9 sur 13
http://www.siteduzero.com/tutoriel-3-155460-les-calculs-en-binaire.html
On ne se proccupe pas de savoir quels calculs il faut effectuer et on oublie pour toujours momentanment les emprunts.
Nous en avons fini avec les calculs.
quation du calcul
Si vous regardez dans l'image du dernier calcul, vous pouvez voir que l'on a compt quatre fois le nombre 5 dans 23 avec un reste de 3. Soit l'quation :
Et donc, en binaire :
Si vous avez compris tout cela et que vous arrivez le refaire, les divisions n'auront plus de secret pour vous.
Ce tutoriel aurait pu s'achever ainsi, vous laissant vos divagations binaires. Cependant, il nous reste quelques dtails rgler avant de se dire au revoir.
Retour en haut
Divers
Avec des nombres ngatifs !
Vous avez bien lu... Des nombres ngatifs !
Petit exemple avec une multiplication trs simple :
Pour -4, il va falloir utiliser la mthode apprise dans la premire partie de ce tutoriel. Reportez-vous y.
La calculatrice
Pour ne pas avoir calculer de tte chaque fois, utilisez donc la calculatrice de votre ordinateur en mode binaire.
Pour Windows
Sous Windows, la calculatrice se trouve dans les Accessoires depuis Programmes. Allez dans Affichage, choisissez Scientifique puis Bin. Vous pouvez faire de simples conversions :
tapez votre nombre dans la base souhaite (hexadcimale, dcimale, binaire ou mme octale
) puis slectionnez une autre base, soit via les boutons, soit via le menu droulant
et votre nombre est automatiquement traduit ! Magique, n'est-ce pas ?
23/11/2012 02:20
10 sur 13
http://www.siteduzero.com/tutoriel-3-155460-les-calculs-en-binaire.html
Pour Linux
Sous Linux il y a plusieurs calculatrices mais avec celle de base, qui se trouve dans le menu Accessoires, le principe est similaire celui de Windows : Affichage, Programmation puis
la base.
Pour Mac OS
Il faut passer en mode programmeur dans le menu Prsentation , ce qui permet :
d'utiliser la calculatrice en dcimal, octogonal ou hexadcimal et d'obtenir immdiatement la conversion en binaire dans le cadre du dessous ;
d'entrer des nombres en binaire en cliquant sur les 0 ou 1 du cadre (la conversion dans la base souhaite s'affiche au-dessus) ;
de connatre le caractre Unicode ou ASCII correspondant au nombre entr, il s'affiche en haut gauche.
Merci Zebrure pour sa capture d'cran sous Mac Os et ses commentaires sur l'utilisation de cette calculatrice.
Retour en haut
Q.C.M.
Le premier QCM de ce cours vous est offert en libre accs.
Pour accder aux suivants
Connectez-vous Inscrivez-vous
Combien font
en binaire ?
10000
11111
10101
23/11/2012 02:20
11 sur 13
http://www.siteduzero.com/tutoriel-3-155460-les-calculs-en-binaire.html
101110
111110
111100
111101
Surtout soyez malin ! Regardez le calcul avant de l'effectuer. Peut-tre n'est-il pas si dur que cela.
100
11
10
1
Avant de vous jeter du troisime tage lancer tte baisse dans le calcul, souvenez-vous que multiplier par 0 donne 0.
J'ai vit les petits (2) pour viter de vous gner mais le calcul est videmment effectuer en binaire.
Allez-y... doucement.
1
2
3
4
5
6
7
Retour en haut
Ainsi s'achve ce tutoriel. Vous savez dsormais additionner, soustraire, multiplier et diviser des nombres en binaire ! Vous allez dsormais pouvoir impressionner vos proches avec les
23/11/2012 02:20
12 sur 13
http://www.siteduzero.com/tutoriel-3-155460-les-calculs-en-binaire.html
Retour en haut
Partager
Tweet
Retour en haut
44 commentaires pour "Les calculs en binaire"
Note moyenne : 3.17 / 4 (23 votes)
Pseudo
Commentaire
C'est bizzare, je ne peux pas voir les images sur ce tutoriel alors que je peux sur tous les autres. Sinon merci pour ce tuto.
Il faut manger pour vivre mais pas vivre pour manger
Se tutarielle t zcaurigeai
), m'ont sembl
tous ceux qui jettent eux aussi un coup d'oeil aux commentaires, voici quelques ressources supplmentaires :
*Dossier sur les codages sur CommentCaMarche
*Convertisseur binaire/dcimal/hexadcimal en ligne
*Table ASCII pour ceux qui sont intresss par le codage des caractres; il y aussi une petite table de conversion pour les chiffres dans les bases binaire, octale,
dcimale et hexadcimale.
00000011
Venez participer et tentez d'tre le grand vainqueur du jeu ! Serez-vous le premier le trouver ?
Les images sont disponibles tous les jours 20H00, 21H30 et 23H00.
kripteks
Il y a ceci:
100(2) - 1(2) = 101(2)
4(10) - 1(10) = 3(10)
Normalement:
100(2) - 1(2) ---> 4-1
n'est pas gale :
101(2) ---> 5
mais :
"11(2) ---> 3
moins que je me trompes bien entendu.
Sergeswi
Fan oblig de
zingwai.
Se tutarielle t zcaurigeai
23/11/2012 02:20
13 sur 13
http://www.siteduzero.com/tutoriel-3-155460-les-calculs-en-binaire.html
23/11/2012 02:20