matrice binaire

matrice binaire - C - Programmation

Marsh Posté le 29-06-2004 à 18:56:31    

Je veux créer une matrice de booléen. Alors je pourrais créer un tableau d'entier avec des 0 et des 1, mais voila, le type int est gourment en mémoire pour seulement un bit de donnée il prend 32 bits. Je voudrais savoir s'il existe un type qui me permet de mémoriser et d'accéder à chaque bit indépendamment avec un tableau du genre:

Code :
  1. TypeBinaire Tableau[25];

Reply

Marsh Posté le 29-06-2004 à 18:56:31   

Reply

Marsh Posté le 29-06-2004 à 18:58:11    

tu peux déjà utiliser des unsigned char pour gagner un peu, mais tu consomme toujours 8x trop. après ilf aut que mettes les mains dans le cambouin pour stocker 8 chiffres par char

Reply

Marsh Posté le 29-06-2004 à 19:09:54    

Commence par utiliser un vrai langage, tant il est vrai que le C cai le mal :o

Reply

Marsh Posté le 29-06-2004 à 19:25:29    

Le seul moyen que je connaisse pour ça consiste à utiliser un unsigned char pour 8 bits (un conversion binaire-décimal en fait).

Reply

Marsh Posté le 29-06-2004 à 19:38:00    

Fait toi un tableau d'unsigned char de la bonne taille
(ex 15 valeurs binaires => 2 char) et utilise de soperations de masquages pr recuperer le bon element.
 
En C++, ca se fait en 10 mn :-/

Reply

Marsh Posté le 29-06-2004 à 19:43:02    

Code :
  1. #include <stdio.h>
  2. #define getbool(i) ((a[i/8]&(1<<(7-i%8)))?1:0)
  3. int main(int argc, char *argv[])
  4. {
  5.     unsigned char a[2] = { 105, 34 }; // correspond a [01101001 00100010]
  6.     for (int n = 0; n < 16; ++n) printf("%d", getbool(n));
  7.     return 0;
  8. }


Message édité par m0rbac le 29-06-2004 à 20:12:28
Reply

Marsh Posté le 29-06-2004 à 19:47:25    

CHAR_BITS BORDEL :o

Reply

Marsh Posté le 29-06-2004 à 19:48:06    

et faudrait apprendre l'hexa bordel :o

Reply

Marsh Posté le 29-06-2004 à 20:22:24    

Taz a écrit :

CHAR_BITS BORDEL :o
et faudrait apprendre l'hexa bordel :o


Tu peux préciser stp !? :??:

Reply

Marsh Posté le 29-06-2004 à 20:26:13    

http://www.dinkumware.com/manuals/ [...] imits.html
 
un char ne fais pas forcément exactement 8bits, il peut en faire plus (y a pas mal de processeur ou la plus petite unité addressable fais 32bits par exemple)
 
sizeof char == 1 byte, byte dans le sens "plus petite unité adressable" et pas dans le sens "octet"

Reply

Marsh Posté le 29-06-2004 à 20:26:13   

Reply

Marsh Posté le 29-06-2004 à 20:32:15    

Bon oui d'accord, vu comme ça...  :whistle:

Reply

Marsh Posté le 29-06-2004 à 20:41:45    

y a pas d'autre manière de voir ça

Reply

Marsh Posté le 03-07-2004 à 00:27:47    

un module Perl de manipulation de vecteurs de bits, avec une librairie utilisable directement en C (sans Perl):
 
http://search.cpan.org/src/STBEY/Bit-Vector-6.3/
 
et normalement c'est bien portable comme truc, et aussi optimisé que possible

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed