Cast et little/big endian
J'ai un code qui fait une multiplication de deux nombres 32 bits, qui sort un résultat sur 64, et que je caste dans un 32 bits. Ma question, hyper simple, si ma machine est little endian, je récupère les 32 bits de poids faibles, et si c'est du big endian ?
Re: Cast et little/big endian
Citation:
Envoyé par progman
J'ai un code qui fait une multiplication de deux nombres 32 bits, qui sort un résultat sur 64, et que je caste dans un 32 bits. Ma question, hyper simple, si ma machine est little endian, je récupère les 32 bits de poids faibles, et si c'est du big endian ?
C'est indépendant.
Code:
1 2 3
|
long long a = 123;
long b = (long) a; |
b vaut toujours 123.
C'est pareil que
Code:
1 2 3
|
int a = 123;
char b = (char) a; |
Un cast, c'est un masque :
Code:
1 2 3
|
/* CHAR_BIT == 8 */
char b = a && 0xFF; |
c'est toujours le poids faible qui est pris. Le fait que le poids faible soit à droite ne dépend pas de l'endianness, car on ne travaille pas au niveau byte, mais avec le type entier.