Convertion binaire negatif en decimal

Fermé
netfire - 27 oct. 2012 à 16:00
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 - 29 oct. 2012 à 10:55
Bonjour,

Sous debian en C je voudrais convertir un nombre binaire en decimal, mais le nombre binaire à traiter peut-être positif comme négatif, il faudrait donc un système de détection de bit signé ou non signé non ? comment faire ? (je suis débutant en C)

merci d'avance

7 réponses

En C si tu déclare un 'char', c'est un octet considéré comme signé :
0x00 -0x7F = positif (0 à 127), 0xFF-0x80 = négatif (-1 à -128)
Donc pour :
char toto= 0xFF;
printf( "%d", toto ); donnera "-1".

C'est pareil pour 'short' (2 octets:), 'long' (4 octets)...

unsigned char, lui est considéré comme non signé (0x00-0xFF) : 0 à 255
0
esse-que le script va détecter seul si le bit est signé ou non signé ? (c'est pour convertir le binaire en décimal d'un capteur qui peut envoyer du négatif comme du positif)
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
29 oct. 2012 à 08:58
Bonjour netfire,

lien vers une source : https://fr.wikipedia.org/wiki/Syst%C3%A8me_binaire#Repr.C3.A9sentation_des_entiers_n.C3.A9gatifs
Cet article reprends le nombres binaires positifs et les nombres binaires négatifs.
Car votre résultat dépend du complément que vous aller utiliser : complément à 1 ou complément à 2.
0
donc si on se place sur 8 bits en complément à 2 il faut que le programme détecte un premier bit à 1, à gauche c'est un nombre négatif sinon si c'est un 0 c'est un nombre positif non ? y-a-il une fonction pour ça ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
29 oct. 2012 à 10:39
exact.
Si tu fait lire en décimal par l'ordinateur, il ajoutera un signe "-" (à gauche ou à droite) de ce nombre.
Pour le détecter en binaire, il faut lire "bit par bit", et le premier 'bit' te donne cette indication.
0
désolé de cette question (je suis très débutant en c) mais comment fait-on pour lire bit par bit ?
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
29 oct. 2012 à 10:55
Pour cela, je ne peux que te conseiller de te rendre sur ce site : https://fr.wikipedia.org/wiki/Manipulation_de_bit

Cordialement
0