Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3212 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  [Binaire] Question

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Binaire] Question

n°1201391
-JoLaFouin​e-
Posté le 16-09-2005 à 22:41:55  profilanswer
 

Pour ceux qui connaissent un tant sois peu le binaire, j'ai une question, quand on calcule un nombre en binaire, est-ce que si on utilise les derniers hexadécimaux (comme 1, 2, 4 et 8) est-ce qu'ils rentrent en compte dans la donnée du nombre en question, pour savoir si je me fais bien comprendre je met un exemple :
 
20 par exemple en binaire ça fait :
 
16 * 1
8 * 0
4 * 1
2* 0
1 * 0
 
Donc on aurait pour le nombre 20 en décimal, 1 0100 en binaire mais la question est, comme il y a 0 et 0 pour les deux derniers, est-ce que ça ne serait pas plutôt juste 101.
J'espère que je me suis bien fait comprendre :pt1cable:  

mood
Publicité
Posté le 16-09-2005 à 22:41:55  profilanswer
 

n°1201410
Poischack
Posté le 16-09-2005 à 23:10:45  profilanswer
 

Non
Petit dev: le 1 en 3ème position (en partant de la fin) corresponds à 2^2 si tu enleves les 0 bha il correspondrais à 2^0.


Message édité par Poischack le 16-09-2005 à 23:12:24
n°1201416
jesus_chri​st
votre nouveau dieu
Posté le 16-09-2005 à 23:34:49  profilanswer
 

20 en décimal ça fait 10100 en binaire, ou même 010100 si tu veux éviter les ambiguités avec le bit de signe.
 
en décimal, 32100 et 321 c'est différent, non ?
et bien en binaire aussi. Le binaire ce n'est pas un truc extraterrestre, c'est de la base 2 et ça obéit aux même règles que la base 10. Il n'y a aucune raison pour que tu enlèves les zéro à droite.

n°1201430
-JoLaFouin​e-
Posté le 17-09-2005 à 00:46:11  profilanswer
 

jesus_christ a écrit :

20 en décimal ça fait 10100 en binaire, ou même 010100 si tu veux éviter les ambiguités avec le bit de signe.
 
en décimal, 32100 et 321 c'est différent, non ?
et bien en binaire aussi. Le binaire ce n'est pas un truc extraterrestre, c'est de la base 2 et ça obéit aux même règles que la base 10. Il n'y a aucune raison pour que tu enlèves les zéro à droite.


Ok, merci. :)
Sinon c'est 0 devant le nombre pour montrer qu'il est positif mais pour montrer qu'il est negatif c'est quoi ? 1 ?

n°1202025
-JoLaFouin​e-
Posté le 19-09-2005 à 00:15:16  profilanswer
 

Up !

n°1203960
ziold
L'original...
Posté le 21-09-2005 à 08:30:57  profilanswer
 

Oui C ça mais fo que le prog (ou la convention) qui l'utilise le reconnaisse comme tel (en clair il faut que ce bit là soit effectivement reconnu comme bit de signe...). Certain programmes utilisent également des bits pour détecter des erreurs, des dépassements, des retenues...
 
Pour revenir sur ton exemple, si en binaire 20 s'écrit 10100, si tu écrit juste 101 ça vaut 5 et plus 20 !!!

n°1204677
-JoLaFouin​e-
Posté le 21-09-2005 à 19:20:14  profilanswer
 

ziold a écrit :

Oui C ça mais fo que le prog (ou la convention) qui l'utilise le reconnaisse comme tel (en clair il faut que ce bit là soit effectivement reconnu comme bit de signe...). Certain programmes utilisent également des bits pour détecter des erreurs, des dépassements, des retenues...
 
Pour revenir sur ton exemple, si en binaire 20 s'écrit 10100, si tu écrit juste 101 ça vaut 5 et plus 20 !!!


Oui d'accord mais si je met 1 devant le chiffre pour montrer qu'il est négatif ça veut aussi dire un autre nombre, donc c'est pas possible que pour montrer qu'il est négatif on doit mettre un 1 devant.
Exemple : 2 en binaire s'écrit 10 et je met donc 110 pour montrer qu'il est négatif, or 110 fait 5 normalement !!  
Donc moi je vais révolutionner le binaire en disant que si on met rien c'est qu'il est négatif, si on met 0 devant ça veut dire qu'il est positif comme ça on évite tout ambiguïté :o [:ddr555]

Message cité 1 fois
Message édité par -JoLaFouine- le 21-09-2005 à 19:20:40
n°1204800
grimgroth
Posté le 22-09-2005 à 02:34:03  profilanswer
 

Aïe aïe aïe...
 
Les nombres sont codés dans les puces/bus/fils/etc... sous des formes normalisées. Par exemple en groupes de 8 ou 16 ou 24 ou 32 bits (ou encore autre chose).
Donc si ta machine code sur 8 bits un entier, et que le premier bit (à gauche) sert (toujours d'après la machine) à indiquer le signe de ce nombre, on en déduit que seuls 7 bits serviront à donner la valeur de ce nombre.
Par exemple 12 sera codé: 00001100
et -12 sera codé              10001100
127 sera codé      01111111
et -127 sera codé 11111111
 
Mais bon, si je me trompe pas c'est un notation qui n'est pas forcément très utilisée. On recontre plutôt la notation dite "complément à 2".
 
Enfin, tout ça ça date un peu, qu'on n'hésite pas à me frapper si je me gourre :)


Message édité par grimgroth le 22-09-2005 à 02:34:49
n°1204807
masklinn
í dag viðrar vel til loftárása
Posté le 22-09-2005 à 07:05:24  profilanswer
 

-JoLaFouine- a écrit :

Oui d'accord mais si je met 1 devant le chiffre pour montrer qu'il est négatif ça veut aussi dire un autre nombre, donc c'est pas possible que pour montrer qu'il est négatif on doit mettre un 1 devant.
Exemple : 2 en binaire s'écrit 10 et je met donc 110 pour montrer qu'il est négatif, or 110 fait 5 normalement !!


Non.
 
Il y a diverses chose à prendre en compte:

  • Une variable est stockée dans un espace de taille fixe, multiple d'un octet. Actuellement, 8, 16, 32 ou 64 bits actuellement. Donc le "0" s'écrit réellement 00000000 (ou 00 en hexadécimal).


Le binaire n'est naturellement pas signé, un octet va de 0 à 255 point barre. Les hommes ayant découvert leur besoin d'utiliser des positifs et des négatifs, ils ont commencé à mettre en place des notations spécifiques sur les nombres spécifiés comme étant signés.
 
La première notation, c'est de coder un nombre précédement sur 8 bits sur seulement 7, et un nombre sur 16 bits passe à 15, ...
 
Résultat, on perd la moitié des valeurs (7bits => 0-127), mais le premier bit sert de bit de signe (là encore uniquement quand la valeur est interprétée comme signée).
 
=> si le bit "0" de l'octet est à "0" on est en positif, sinon on est en négatif. Inconvénient de la méthode, 00000000 est équivalent à 10000000 (tous deux sont égaux à "0" ), on perd une valeur "pour rien". On a donc mis en place le complément à deux: pour avoir un nombre négatif, on prend sa version positive (ex: 00000101 pour "5" ), on inverse chaque bit ce qui nous donne le complément à 1 (=> 11111010) et on ajoute "1" (=> 11111011), résultat sur 8 bits on peut représenter les valeurs de -128 à 127.
 
On notera une chose très intéressante avec le complément à deux: sommer deux nombres opposés en complément à deux donne effectivement "0"
 

 00000101
+ 11111011
1 00000000


le bit de retenue passe à "1", mais on peut parfaitement l'ignorer puisqu'il est hors limite (retenue/overflow)
 
et le bit de poids fort étant bien à "1", on a effectivement un nombre négatif (le bit de poids fort étant un indicateur de signe, mais pas un simple "bit de signe" )


Message édité par masklinn le 22-09-2005 à 07:06:12

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1261416
lbasic
Posté le 08-12-2005 à 02:46:54  profilanswer
 

adresse d'un convertisseur gratuit :
 
http://computer.pleug.com/pcc.htm
 
ça peut t'être utile. Il est en version 1 RC2.
 
@++


---------------
Liberty BASIC France : http://www.lbasic.fr

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  [Binaire] Question

 

Sujets relatifs
Question de definition de champ[Matlab] question sur les figures
[Mysql] Question sur versionQuestion XML-Flash
Question index FullTextFonction mail() :petite question
Petite question à propos de l'accès en mode binaire des fichiers...Question sur le code binaire
pitite question en binaire ...Encore un tite question pour une soustraction en binaire...
Plus de sujets relatifs à : [Binaire] Question


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR