Convertion binaire negatif en decimal

netfire -  
Heliotte Messages postés 1561 Statut Membre -
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

  1. spock
     
    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
  2. netfire
     
    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
  3. netfire
     
    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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Heliotte Messages postés 1561 Statut Membre 92
     
    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
  6. netfire
     
    désolé de cette question (je suis très débutant en c) mais comment fait-on pour lire bit par bit ?
    0