Partage
  • Partager sur Facebook
  • Partager sur Twitter

Questions sur la représentation des entiers

Sujet résolu
    9 août 2019 à 16:37:52

    Bonjour tout le monde,

    Je suis en train de faire un exercice de C portant sur l'affichage d'un nombre dans la console.

    Je bloque sur la question suivante : 

    Pour (a) : 

    J'ai fait 2^32 - 1 = 4294967295 => soit 10 caractères

    Pour (b) : 

    2^64 - 1 = 18 446 744 073 709 551 615 => 20 caractères

    Est-ce-que c'est bon ?

    Pour (c) et (d), je ne vois pas du tout comment faire. Est-ce-que quelqu'un peut m'aider ?

    Je vous souhaite une bonne journée, Thibaut D. .

    • Partager sur Facebook
    • Partager sur Twitter
      9 août 2019 à 17:08:04

      Il est dit "chaîne de caractère", en C une chaîne de caractère doit ce terminer par un caractère NULL '\0'.

      pour c) et d) c'est encore plus simple puisque la base 16 c'est de hexadécimal et un nombre sur 32 bit est codé sur 4 octets et un octet est codé par 2 caractères hexadécimal... 

      • Partager sur Facebook
      • Partager sur Twitter
        9 août 2019 à 17:31:14

        Bonjour Rouloude, merci pour votre réponse.

        Donc si j'ai bien compris en prenant en compte le caractère NULL : 

        (a) : 12 caractères

        (b) : 22 caractères

        (c) : 32 bits = 4 octets => Comme 1 octet = 2 caractères hexa. On fait 4*2=8+2(NULL) = 10 caractères

        (d) : 64 bits = 8 octets => 8*2=16+2(NULL) = 18 caractères

        C'est correct ?

        • Partager sur Facebook
        • Partager sur Twitter
          9 août 2019 à 17:54:46

          Hello,

          Le caractère NULL représenté par '\0' n'occupe qu'un seul octet. À part ça, c'est correct.

          -
          Edité par edgarjacobs 9 août 2019 à 17:55:54

          • Partager sur Facebook
          • Partager sur Twitter

          On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

            9 août 2019 à 17:58:28

            Je pense que ton raisonnement n'est toujours pas correct, même si la chance fait que le résultat l'est. Prenons le cas, a):

            pour un entier SIGNE de 32 bits, la valeur absolu maxi est égale à 2^31, donc 2 147 483 648, ce qui fait toujours 10 chiffres, auxquels il faut ajouter le SIGNE le cas échéant ainsi que le zéro terminal. Il faut donc réserver 12 caractères.

            Je te laisse le soin de faire les autres cas.

            -
            Edité par zoup 9 août 2019 à 17:59:42

            • Partager sur Facebook
            • Partager sur Twitter

            Questions sur la représentation des entiers

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown