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

Python Discussion :

mémoire et structure


Sujet :

Python

  1. #1
    Membre très actif Avatar de Kurodiam
    Inscrit en
    Décembre 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 208
    Par défaut mémoire et structure
    Bonjour,

    L'unité élementaire est le bit , et chaque unité a une adresse .

    _Un bit a deux états : 0 et 1 . Est-ce que le bit prend déjà 2 cases dans la mémoire ?

    _Une mémoire de 100 bits permet de stocker 12 caractères sur 8 bits . Dans le tableau , le 12ème caractère désigne 11 , puisque que çà commence à 0 ? Donc cela correspond à <001+011+011+01> ?

    _Ensuite , on parle de la mémoire qui est calibrée en octects , ayant la méme taille (identique) .Là ,on suppose que leurs tailles sont identiques.

    La taille , c'est le nombre de caractères ou de cases ou un regroupement ?




    _La position relative de la donnée recherchée est calculée à partir de son indice I, de la taille des composantes T, de leur nombre N. La formule générale, pour un vecteur comme celui que nous avons vu, appelé vecteur à une dimension, est : Si I < N, position-relative = ((I-1) * T) + 1

    un tableau tel que [0|1|0] [0|0|1] [0|1|1] :

    _il y'a trois composantes , d'espace unitaires 3 donc T = 3 .

    _L'indice représente quoi ? la position , le chiffre ? là je vois que c'est écrit en binaire .

    _ le nombre N désigne quoi ?

    _Comment faire pour arriver à [0|0|1] ?

  2. #2
    Expert confirmé

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Par défaut
    bonjour à toi,

    Alors non, un bit correspond à une "case memoire". En fonction de son etat, cette "case" sera à 0 ou 1.

    En binaire, et en informatique en general, on commence effectivement le comptage à 0 et non à 1. De fait, le douzieme octet sera désigné par l'index 11 effectivement. Dans ton exemple, tu parles de caractère codé sur 1 octets, puis tu cite des bits. Je penses que tu confond les deux.

    8 bits correspondent à un octet. ex: 01101100 correspond à un octet ou un caractère.

    Quand on parle de taille, on parle du nombre d'octets occupés. Par contre, il faut différencier les octets "windows" et les octets "reels" utilisés par linux. Je m'explique. De base, 1 octets = 8 bits, cela ne changera jamais. Par contre, selon les systemes, il existe des arrondis:
    -Sous windows, 1KO vaut 1000 ovtets pour simplifier les calculs.
    -Sous Linux, les octets reels, 1KO ou 1KiO vaut 1024 octets.

    Pour cette raison, si tu compare un fichier un peu volumineux sous windows et Linux, tu n'aura pas tout à fait la même taille d'affiché.

    Dans ton exemple suivant, il y a encore confusion octet/bit. J'espère qu'avec mes explications tu y voit plus clair.

    L'indice correspond à une position effectivement. La position est un chiffre. On passe par une variable, car on veut faire evoluer la valeur de ce chiffre de manière dynamique (une reference qui evolue) et non aps de manière statique (un chiffre ecrit en dur). C'est le principe d'iteration. En incrementant i, on peut se deplacer dans le tableau de donnée.

    N est la reference d'une boucle while.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    i = 0
    N=4
    tant que i < N, faire : 
        action
        print i
        i = i+1 #on incremente la valeur de i
    ici, le print va renvoyer 0 puis 1, puis 2 puis 3.

    J'espère que cela repond à tes attentes. Dans le cas contraire n'hesite pas, on est là pour ça

  3. #3
    Membre très actif Avatar de Kurodiam
    Inscrit en
    Décembre 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 208
    Par défaut
    Merci pour l'explication , je sais mnt la différence entre octect et bits .

    Les noms des jours de la semaine peuvent être enregistrés dans un vecteur de 7 composantes ; la taille des composantes T se calcule à partir de la plus grande : 8 octets, comme dans dimanche, à interpréter comme des caractères (c) ; il est inutile d'indiquer la taille de l'ensemble, puisqu'elle peut être calculée (7*8, soit 56 octets) ; la représentation interne, à supposer que l'en-tête se trouve à l'adresse 11 de la mémoire (et comme par hypothèse nous avons déjà supposé que l'en-tête précède la donnée), ressemblerait à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    V 	7 	c 	8 	L 	u 	n 	d 	i 				M 	a 	r 	d 	i 				M 	e 	r 	c 	r 	e 	d 	i 	J 	e 	u 	d 	i 			
    11 	12 	13 	14 	15 	16 	17 	18 	19 	20 	21 	22 	23 	24 	25 	26 	27 	28 	29 	30 	31 	32 	33 	34 	35 	36 	37 	38 	39 	40 	41 	42 	43 	44 	45 	46
    				1 	2 	3 	4 	5 	6 	7 	8 	9 	10 	11 	12 	13 	14 	15 	16 	17 	18 	19 	20 	21 	22 	23 	24 	25 	26 	27 	28 	29 	30 	31 	32

    La troisième ligne contient les adresses internes au vecteur. Comment trouver la troisième composante ? Il suffit de sauter les composantes précédentes (deux de 8 octets) et d'aller à la case suivante : le nom du troisième jour de la semaine commence au 17e octet (2*8+1) depuis le début des données (31e octet de la mémoire). À partir de l'adresse 72 figurent d'autres informations, appartenant à d'autres données. La fin de la représentation interne du vecteur pourrait ressembler à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    V 	e 	n 	d 	r 	e 	d 	i 	S 	a 	m 	e 	d 	i 			D 	i 	m 	a 	n 	c 	h 	e 	& 	a 	b 	c 	d 	e
    47 	48 	49 	50 	51 	52 	53 	54 	55 	56 	57 	58 	59 	60 	61 	62 	63 	64 	65 	66 	67 	68 	69 	70 	71 	72 	73 	74 	75 	76
    33 	34 	35 	36 	37 	38 	39 	40 	41 	42 	43 	45 	45 	46 	47 	48 	49 	50 	51 	52 	53 	54 	55 	56

    PS : Par rapport au cours , on nous demande de travailler sous linux et pas en C .Mais est-ce que les indices fonctionnent de la même manière ? en C , çà commence à partir de 0 ....


    Mais voilà la formule du cours :
    Si I < N, position-relative = ((I-1) * T) + 1

  4. #4
    Expert confirmé

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Par défaut
    En informatique, quel que soit le langage, sauf exception, on commence toujours à 0.

  5. #5
    Membre très actif Avatar de Kurodiam
    Inscrit en
    Décembre 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 208
    Par défaut
    ok! c'est clair pour l'indice .

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par deusyss Voir le message
    En informatique, quel que soit le langage, sauf exception, on commence toujours à 0.
    Et fortran alors?
    Commencer une séquence par 0 permet d'optimiser certaines opérations via "modulo". Ceci dit, "informatique" n'est que représentation: rien n’empêche de faire croire a l'utilisateur qu'il travaille avec des données dans 1..7 (les jours de la semaine) alors qu'elles sont stockées dans des "tableaux" avec des indices dans 0..6.
    Un des aspects de la programmation sera de faire la différence entre ce qu'on appelle des données métiers (jours de la semaine) et leur représentation dans un programme de traitement.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre très actif Avatar de Kurodiam
    Inscrit en
    Décembre 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 208
    Par défaut
    ok!L'ensemble I dépend de l'ordre des élements, et T = 8 ,si on prends le 2ème élèment du tableau : son indice est 2 ,
    d'où (2-1)*8+1=9 ( correspond à la lettre M de Mardi ).



    En fait , là c'est le vecteur de l'entète , et le 'c' désigne juste que c'est un caractère (et là des lettres) .
    Ce qui me tracasse , c'est que méme l'entété a une adresse , et je sais pas comment en tenir compte ??

    Il y'a comme deux adresses dans la mémoire : une interne en rapport au vecteur , et une dans la mémoire en gros (dur).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. désallocation mémoire - fonction - structure - tableau dynamique
    Par Flaherty Mc Coillean dans le forum Débuter
    Réponses: 2
    Dernier message: 25/11/2009, 17h42
  2. Alignement mémoire pour les structures.
    Par SpaceToto dans le forum Visual C++
    Réponses: 4
    Dernier message: 14/09/2006, 11h15
  3. Réponses: 6
    Dernier message: 24/03/2006, 18h24
  4. Je recherche un composant Tree non visuel, structure mémoire
    Par bambino3996 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 05/09/2005, 17h03
  5. Structure de la mémoire
    Par mikevador02 dans le forum Assembleur
    Réponses: 7
    Dernier message: 02/07/2003, 14h18

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