sizeof applied to a bit-field

Tout sur les langages de programmation.

sizeof applied to a bit-field

Messagepar xizor » 14 Juillet 2007, 18:18

Bonjour,

Je voudrai affiche la taille que prend en memoire la variable bit qui ce trouve dans la structure.

En theorie elle doit valoire 1bit "int bit: 1;".

Comme sizeof calcul en octet faudrait crée une autre fontion...

Code: Tout sélectionner
#include <stdio.h>
#include <stdlib.h>

struct bit {
    int bit: 1;
} super;

int main() {

    super.bit = 0;

    printf("%d", super.bit);
    printf("%d", sizeof(super.bit));

        return 0;
}


Voici ce que m'indique le compilateur : sizeof applied to a bit-field


Merci de pouvoir m'aide...

Posté après 23 minutes 11 secondes:

Est ce que

struct bit {
int bit: 1;
} super;

utilise les 4octets de cette maniere alors 0000 0000 ' 0000 0000 ' 0000 0000 ' 0000 000"0*1" ???

donc en memoire sa revient au meme
Avatar de l’utilisateur
xizor
Débutant
Débutant
 
Messages: 38
Inscription: 26 Octobre 2005, 18:24

Messagepar skirby » 14 Juillet 2007, 19:39

Salut xizor,

La structure bit utilise 4 octects mais dans ton cas seulement 1 bit est utilisé.

Dans cet exemple :
Code: Tout sélectionner
#include <stdio.h>
#include <string.h>

struct bit {
  int a: 1;
  int b: 1;
  int c: 1;
  int d: 1;
  int e: 28;
};

void main(void)
{
  struct bit super;

  super.a = 1;
  super.b = 0;
  super.c = 1;
  super.d = 1;
  super.e = 5;
}


l'octet super prendra successivement les valeurs :
1 puis 5 puis D (13 décimal) puis 5D

Les bits sont représentés de cette façon :
e prendra les 28 bits de gauche puis les autres seront 8 puis 4 puis 2 puis 1
Pour faire simple, les variables a, b, c, d représente un octet en mémoire et e les 3 autres octets du int.

Ai-je été clair ?
skirby
Dieu du cracking
Dieu du cracking
 
Messages: 2160
Inscription: 29 Novembre 2004, 09:53

Messagepar xizor » 15 Juillet 2007, 14:26

merci pour ces explications...
Avatar de l’utilisateur
xizor
Débutant
Débutant
 
Messages: 38
Inscription: 26 Octobre 2005, 18:24


Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités