Bonjour
a l'occasion d'un projet, je dois rendre a la fin une adresse memoire (en hexadecimale) qui est un multiple de 4, comment faire pour verifier si une adresse est devisible par 4 ou retourner systematiquement une adresse divisible par 4.
merci![]()
Bonjour
a l'occasion d'un projet, je dois rendre a la fin une adresse memoire (en hexadecimale) qui est un multiple de 4, comment faire pour verifier si une adresse est devisible par 4 ou retourner systematiquement une adresse divisible par 4.
merci![]()
si ((n % 4) == 0) alors n est divisible par 4
Maintenant comment forcer une adresse à être forcément divisble par 4, j'en sais absolument rien. Si tu as un tableau de long ou de float, alors chaque élément du tableau aura son adresse 4 octets plus loin que l'élément précédent. A part ça...
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Normalement il suffit de calculer [(adresse+3) & -4].
merci sa marche , j crée une fonction qui calcul le modulo de l'adresse et de 4 et que me retourne le resultat
merci
salut en hexadécimal c'est divisible par 4 si ça finit par 0, 4, 8 ou C
en binaire c'est encore mieux, c'est divisible par 4 si ça finit par 00
int estdivisiblepar4(int n) {
return !(n & 3);
}
Une adresse mémoire n'est pas en 'hexadécimal'. Comme toute valeur, elle est codée en binaire et sa représentation dépend de son type et de certains choix faits par le programmeur et par l'implémenteur du langage C.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #include <stdio.h> int main (void) { int x; printf ("%lu\n", (unsigned long) &x); printf ("%lX\n", (unsigned long) &x); printf ("%p\n", (void *) &x); return 0; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 2293620 22FF74 0022FF74 Press ENTER to continue.
Partager