C-assembleur

perla -  
 perla -
Bonjour,


je veux créer un tableau de bits de taille maximale égale à 32 en C.comment faire exactement??
A voir également:

3 réponses

fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Problème, le C n'impose pas la taille de ses types.
Un integer ne fait donc pas sytèmatiquement 32 bits.

Néanmoins, tu peux utiliser un long int qui fait au minimum 32 bits.
En faisant :
long a = ...;
a=a&0xffffffff; (pour remettre sur 32 bits).

Ensuite, en jouant avec les opérateurs binaire >> et les masques & tu pourras récupérer aisément tous les bits.
Par exemple : a>>3 & 1 récupérera le 3ème bits.
Tu peux faire une fonction pour faciliter l'extraction.

Cdlt,
1
perla
 
merciii
0
Groarh Messages postés 706 Statut Membre 185
 
Salut,

tu ne peux manipuler directement les bits en C, par contre tu peux faire des opérations binaires avec les entiers. Normalement avec la plupart des compilateurs 32 bits (vérifie pour le tien), la taille des int est de 4 octets, soit 32 bits, donc ça convient pour ce que tu veux faire.

Il faut donc imaginer que ton int est en fait un tableau de 32 bits. D'ailleurs, tu peux avoir une représentation hexadécimale des entiers en utilisant le format %x de printf.

Exemple, un petit OR logique :
#include "stdio.h"
#include "stdlib.h"

// entrez les paramètres sous forme hexadécimale
// exemple : 65d4ef
int main(int argc, char** argv)
{
	if (argc != 3)
	{
		printf("ce programme attend deux paramètres\n");
		return -1;
	}
	
	int x;
	sscanf(argv[1], "%x", &x);
	int y;
	sscanf(argv[2], "%x", &y);
	printf("%x | %x = %x\n", x, y, x | y);
	
	return 0;
}


Pour vraiment voir du binaire, il faut bricoler un peu mais ça doit pas être difficile.

;)
0
perla
 
mercii
0
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
32 bits, ça fait 4 octets, tu peux donc créer un tableaux de 32 bits avec un pointeur et malloc :
void *p; 
p=malloc(4);

bon ensuite, tu es bien emmerder pour manipuler ça, mais bon, tu as ton tableau de 32 bits.
Il y a un autre truc avec les struct, mais je ne me souviens plus des réglèes, je crois que tu es limité à 8 bits par champ :
struct 
{ 
   int a:32; 
}

https://www.squalenet.net/fr/ti/tutorial_c/14-structures-unions.php5
à la fin
La vrai soumission c'est quand les esclaves s'inquiètent du cours du coton.
Char Snipeur
0
perla
 
merci
0