#define BYTE unsigned char
#define WORD unsigned int
int main()
{
BYTE tmp[2];
WORD *val;
tmp[0] = 1;
tmp[1] = 1;
val=(WORD*)&tmp[0];
printf("%.0f",(double)*val);
getch();
return 0;
}
Quand je compile avec TC++ (sous DOS) j'ai la valeur 257. Rien de bien étonnant me direz vous ....
Essayez avec VC++.... Apparament mon unsigned int est pointé sur 4 Bytes au lieu de 2.... et on à un resultat bizarre > 65535
Au contraire, tout ce qui sera traite sur 32 bits sera le plus rapide.
Les acces 8 bits idem, par contre les acces 16 bits ont une penalite et ne sont donc pas parallelisables.
ah oui et ensuite c'est quoi ce cast '(double)*val', tu vas charger 8 octets en fpu a partir de cette adresse alors qu'il n'y en a que 2 d'initialises. Comprends pas le but du tout.
mais c'est plutot debile on utilise 2 byte pour rien. Autant dire que y'a plus de int et qu'on travaille toujours en long....
Surtout quand on veut faire du transfert de donnée par voie serie, ca implique de coller 2 octets. Ca multiplie par 2 le nombre d'octets envoyés.....
Question un processeur c'est comme un µC y'a des fonction de type
mov.b
mov.w
mov.l
C'est pas plus long de travailler qu'avec des registres 32 bytes ???
Enfin bref, je n'ai pas le niveau pour critiquer
Je vais me contenter de ta réponse... Merci à vous Deux
Moi j'ai une ptite question qui n'a rien a voir.
On parle souvent de bits et de bytes alors qua ca a rien a voir.
Dans le cas de votre de discussion ne devrais t'on pas parler de byte et non de bits ?
DeAtHCrAsH > quand BruNews parle de
" tout ce qui sera traite sur 32 bits sera le plus rapide"
"Les acces 8 bits idem"
"les acces 16 bits ont une penalite" ...
tu te doute bien que c'est des bits et non des bytes ?