A voir également:
- C-assembleur
- Logiciel assembleur - Télécharger - Édition & Programmation
- Assembleur pdf - Guide
- Assembleur - Forum Programmation
- Assembleur pc gamer ✓ - Forum Études / Formation High-Tech
- Problème assembleur - Forum Assembleur
3 réponses
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,
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,
perla
merciii
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 :
Pour vraiment voir du binaire, il faut bricoler un peu mais ça doit pas être difficile.
;)
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.
;)
32 bits, ça fait 4 octets, tu peux donc créer un tableaux de 32 bits avec un pointeur et malloc :
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 :
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
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