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 :

Représentation des données dans la mémoire


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut Représentation des données dans la mémoire
    J'ai une question :

    Une case mémoire, sur un ordinateur correspond à un octet (8 bits), donc le nombre 145 sera stocké et traduit en binaire qui donnera 10010001 (dans une case), et si je veux stocké le nombre 37120 il faudra qu'il regroupe plusieurs cases d'un octet ?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    Citation Envoyé par lassault1 Voir le message
    J'ai une question :

    Une case mémoire, sur un ordinateur correspond à un octet (8 bits), donc le nombre 145 sera stocké et traduit en binaire qui donnera 10010001 (dans une case), et si je veux stocké le nombre 37120 il faudra qu'il regroupe plusieurs cases d'un octet ?
    Oui. Après cela dépend justement du type de ta donnée et donc la manière qu'elle sera codée en mémoire. Par exemple, le nombre pourra être codé sur 2 ou 4 octets en fonction du type, ce qui donne respectivement 65536 et un peu plus de 4 milliards de possibilités différentes.
    Si le nombre est considéré comme signé, le bit le plus à gauche sert à indiquer le signe (il y a donc une plage de valeurs pour la partie positive et une autre plage pour la partie négative).
    Ensuite, cerise sur le gâteau, les octets en mémoire représentant le nombre peuvent être écrits soit dans un ordre, soit dans l'autre. Ce qu'on appelle le boutisme (ceci dépend en fait du microprocesseur).

    Mais bon, je veux pas te perturber avec tout ça.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    oula je mélange tout...

    Qui peut m'expliqué comment les variables de type char, int long, float, et double sont stocké dans la mémoire en binaire ?

  4. #4
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Une case mémoire correspond à un byte. Dans la plupart des cas, mais pas toujours, un byte est un octet.

    Restons, pour l'exemple, dans ce cas le plus courant :
    Prenons le cas d'un nombre entier sur 16 bits, composé de 2 octets : un octet avec les bits de poids forts et un avec les bits de poids faibles. Il y a deux situations, toutes les deux très répandues : l'ordre en mémoire peut être l'octet de poids fort puis l'octet de poids faible ou l'inverse. Cela dépend de la machine. C'est ce qu'on appelle le "boutisme". Cette situation se généralise pour des grandeurs utilisant plus d'octets (avec des variantes supplémentaires assez rares).
    Si un programme dépend donc du boutisme, il est non portable.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par lassault1 Voir le message
    oula je mélange tout...

    Qui peut m'expliqué comment les variables de type char, int long, float, et double sont stocké dans la mémoire en binaire ?
    Un char est simplement un nombre stocké sur 8 bits

    Un short int est stocké sur 2 * 8 bits mais soit les 2 octets sont dans le sens gauche-droite (normal) soit ils sont inversés => ex: si tu dois stocker 0x0123 => soit il stockera 0x01 et 0x23 soit il stockera 0x23 et 0x01 (ça dépend de l'architecture)

    Un long int est stocké sur 32 bits avec la même remarque que pour le short

    Un float est stocké sur 32 bits mais sous forme scientifique => il est recodé en x * 10^y avec x nombre décimal compris entre 0 et 9. Et dans les 32 bits il y a une partie réservée pour le codage du x et une partie pour le codage du y

    Un double est stocké comme un float mais sur 64 bits
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Un char est simplement un nombre stocké sur 8 bits

    Un short int est stocké sur 2 * 8 bits mais soit les 2 octets sont dans le sens gauche-droite (normal) soit ils sont inversés => ex: si tu dois stocker 0x0123 => soit il stockera 0x01 et 0x23 soit il stockera 0x23 et 0x01 (ça dépend de l'architecture)

    Un long int est stocké sur 32 bits avec la même remarque que pour le short

    Un float est stocké sur 32 bits mais sous forme scientifique => il est recodé en x * 10^y avec x nombre décimal compris entre 0 et 9. Et dans les 32 bits il y a une partie réservée pour le codage du x et une partie pour le codage du y

    Un double est stocké comme un float mais sur 64 bits
    Attention, en C, la taille des types char, short, int, long, float, double, etc. ne sont pas garanties. Seule la plage minimale l'est.

    C99 a introduit d'autres types (int8_t, int16_t, etc.) dont la taille est garantie. par contre leur présence n'est pas garantie.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    Merci.. mais moi je veux juste savoir si le type short (2 octets) occupe 1 ou 2 case en mémoire !

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    Citation Envoyé par lassault1 Voir le message
    Merci.. mais moi je veux juste savoir si le type short (2 octets) occupe 1 ou 2 case en mémoire !
    Tu as ici la taille minimale de chaque type : http://c.developpez.com/faq/?page=ty...S_taille_types

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    Merci pour le lien..

    Le char 8bits représente une case, est-ce que le long 32 bits représente aussi une case ?

  10. #10
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Si 8 bits représentent (plutôt "correspondent à") une case, combien de cases à ton avis représentent 32 bits ?

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 103
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Melem Voir le message
    Si 8 bits représentent (plutôt "correspondent à") une case, combien de cases à ton avis représentent 32 bits ?
    Oui...

Discussions similaires

  1. Réponses: 7
    Dernier message: 02/03/2014, 16h15
  2. Réponses: 2
    Dernier message: 17/03/2009, 11h03
  3. Stocker des données dans la mémoire pour exploitation sur feuilles excel
    Par newcodeur dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 16/09/2008, 12h03
  4. Réponses: 3
    Dernier message: 22/02/2004, 20h09
  5. Temps d'accès à des données dans un fichier
    Par TONIAPEL dans le forum Assembleur
    Réponses: 5
    Dernier message: 28/09/2003, 15h21

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