IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Petites questions basiques


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 112
    Par défaut Petites questions basiques
    - Comment déduit-on la plage -3,4E-38 à 3,4E38 pour le codage d'un nombre float : Parce qu'avec 8 bits pour l'exposant et 23 pour la mantisse j'arrive plutôt à 2^23E2^8 ce qui est beaucoup plus grand...

    - Le code ASCII va de 0 à 127 à priori donc à quoi sert-il que le type char puisse descendre jusqu'à -128 :

    - Je ne comprend pas l'utilité du modificateur de type signed, si on l'utilise c'est qu'on va stocker dans la variable un nombre qui tient dans la taille mémoire par défaut du type correspondant donc dans quelle situation son utilisation peut être nécessaire pour éviter un dépassement de capacité :

    Merci.

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: Petites questions basiques
    Citation Envoyé par brice_(29)
    - Comment déduit-on la plage -3,4E-38 à 3,4E38 pour le codage d'un nombre float : Parce qu'avec 8 bits pour l'exposant et 23 pour la mantisse j'arrive plutôt à 2^23E2^8 ce qui est beaucoup plus grand...
    Ce sont des problèmes de codage interne des flottants. Ils peuvent varier d'une machine à l'autre. Les valeurs de l'implémentation sont définies dans <float.h>. Pour une explication détaillée du format standard des flottants (IEE 754) :

    http://babbage.cs.qc.edu/courses/cs341/IEEE-754references.html

    Pour jouer avec le format :

    http://babbage.cs.qc.edu/courses/cs341/IEEE-754.html
    - Le code ASCII va de 0 à 127 à priori donc à quoi sert-il que le type char puisse descendre jusqu'à -128 :
    Il existe des caractères dont les valeurs dépassent 127. ASCII n'est qu'un charset parmi d'autres.
    Il existe 3 sortes de char :
    • signed char dont la plage garantie est -127..+127
    • unsigned char dont la plage garantie est 0..+255
    • char (ou plain char) qui est le type correspondant aux besoins du charset courant (ASCII : 0-127 -> signed char, EBCDIC : 0-255 ->unsigned char)

    - Je ne comprend pas l'utilité du modificateur de type signed,
    Pour pouvoir stocker des valeurs < 0

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 112
    Par défaut
    Merci bien pour ces précisions....précises 8)

  4. #4
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut Re: Petites questions basiques
    Citation Envoyé par brice_(29)
    - Comment déduit-on la plage -3,4E-38 à 3,4E38 pour le codage d'un nombre float : Parce qu'avec 8 bits pour l'exposant et 23 pour la mantisse j'arrive plutôt à 2^23E2^8 ce qui est beaucoup plus grand...
    Tu y es presque. La partie décimale est après la virgule (et il y a un 1 implicite avant), donc tu remplaces ton 2^23 par 2 et l'intervalle de l'exposant va de -126 à 127 (il y a une valeur d'exposant utilisée pour les nombres "dénormaux" et une pour les infinis et les NaN), donc tu remplaces 2^256 par 2^127 et on arrive bien à 3,4E38.

    - Le code ASCII va de 0 à 127 à priori donc à quoi sert-il que le type char puisse descendre jusqu'à -128 :
    L'ASCII n'est plus utilisé depuis longtemps mais il forme la partie commune de pas mal de codages sur 8 bits utilisés en pratique (une partie des ISO-8851-x, une partie des code pages utilisés par Windows) dont ceux utilisés pour le français.

    Le type char n'est pas nécessairement signé. Si on est en EBCDIC il est obligatoire qu'il ne le soit pas. Si on utilise une des extensions de l'ASCII il peut l'être ou pas et en pratique on rencontre les deux cas suivant les architectures.

    - Je ne comprend pas l'utilité du modificateur de type signed, si on l'utilise c'est qu'on va stocker dans la variable un nombre qui tient dans la taille mémoire par défaut du type correspondant donc dans quelle situation son utilisation peut être nécessaire pour éviter un dépassement de capacité :
    signed n'est pas redondant dans le cas des char. Pour les autres types entiers, il l'est.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 112
    Par défaut
    Ok!
    Pour le float j'ai trouvé un autre truc qui dit que la mantisse est comprise entre 0,5 et 1,0 et que valeur = mantisse*(2*exposant)...c'est pas forcément plus clair , en tout cas 2^128 ça donne le bon résultat effectivement. 8)

    Merci de vos réponses.

Discussions similaires

  1. [Visuel XP] Petite question sur le theme XP...
    Par ZoumZoumMan dans le forum C++Builder
    Réponses: 12
    Dernier message: 20/01/2005, 14h41
  2. [CR8.5] petite question ..
    Par mcrocher dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 13/09/2004, 15h04
  3. Une petite question
    Par Etienne1 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/08/2004, 16h19
  4. [FOREIGN KEY] petite question bete ...
    Par dzincou dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 16h35
  5. Petite question sur les performances de Postgres ...
    Par cb44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 13h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo