Comment définir un type de donnée binaire de taille variable ? [C] - C - Programmation
Marsh Posté le 26-05-2005 à 14:20:02
char fait CHAR_BIT bits et int fait sizeof(int) * CHAR_BIT bits, si tu veux un truc fixe regarde dans stdint.h (c99)
c'est quoi le bruit de calcul, l'overflow ?
Marsh Posté le 26-05-2005 à 14:26:20
le bruit de calcul peut provenir de l'overflow et aussi des arrondis dans certaines opérations (en fait les nombres que je manipule ont une partie entière et une décimale, codées en binaire).
c'est le même genre de problème que le bruit de quantification lors de la conversion analogique vers numérique : il dépend du pas de quantif et ici le bruit de calcul dépend de la précision des variables
Marsh Posté le 26-05-2005 à 14:39:43
peut etre des champs de bits ? http://publications.gbdirect.co.uk [...] ields.html
Marsh Posté le 26-05-2005 à 14:48:02
hum ça n'a pas l'air très pratique ce truc, ça n'est pas portable, dépendant du compilateur et en plus ils n'ont pas d'adresse
pas d'autre idée ??
Marsh Posté le 26-05-2005 à 14:50:53
alors faudra le gerer toi meme ou peut etre que ca existe deja une bibliotheque qui le fait, genre gmp ?
Marsh Posté le 26-05-2005 à 15:40:17
ceyquem a écrit : hum ça n'a pas l'air très pratique ce truc, ça n'est pas portable, dépendant du compilateur et en plus ils n'ont pas d'adresse |
|
etc.
rien de compliqué.
Le type d'un champ de bit est int ou unsigned int. Le C garanti au moins 16 bits pour unsigned int. Sauf antiquité (x-86 mode réel, par exemple) il y a de fortes chances que ta machine supporte des int de 32 bits.
Marsh Posté le 26-05-2005 à 18:55:58
Salut!
Normalement les "bitfields" sont portables dans la mesure où l'on réserve des bits d'une variable. Ce qui n'est pas portable dit "implementation defined" ce sont les "packed bits" c'est à dire le compactage des bits pour ne pas laisser de trous dans la suite de bits que constitue une structure.
Marsh Posté le 30-05-2005 à 13:19:42
Si toutes tes variables font moins de 32 bits de long, les bitfields sont une excellente solution. Tu peux aussi utiliser un systeme de masques (&, |) et de décalages binaires (>> << ) mais c'est bien s'emmerder pour arriver au même résultat.
Bon évidemment avec les bitfiels si tu commences à faire des énormes tableaux v'la la perte d'espace mémoire... (une structure = 32 bits, donc c'est bête si t'en utilise 1/4 à chaque fois...)
Marsh Posté le 26-05-2005 à 14:13:36
Bonjour,
je voudrais définir un type de donnes binaires de taille variable
(tailles exemples : 17 bits, 12 bits, 23 bits, ...) qui n'est pas
forcément de la taille de char (8 bits) ou int (32 bits).
l'idée est qu'en faisant des opérations sur ces nombres
je puisse mettre en évidence le bruit de calcul. en effet,
si je stocke un nombre de 12 bits dans un int de 32 bits,
j'aurai trop de précision lors du calcul.
Une idée ?
merci