Que fait cette fonction?

Fermé
sergio - 29 oct. 2010 à 10:10
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 - 30 oct. 2010 à 11:49
Bonjour,


Qui peut me dire ce que fait cette fonction?

public static Int32 Merge(ushort value1, ushort value2)
{
return (Int32)(value1 << 16 | value2);
}

value1 et value2 sont des mots de 8bits je pense

le signe << c'est bien pour décaler les bits de 16 positions vers la gauche?
le signe | est équivalent au 'ou' logique?

Je ne comprend pas bien...

Merci d'avance de votre aide,

Sergio


1 réponse

Salut,

Pour savoir la taille de "ushort", ça dépend du compilateur que t'utilise, mais je pense que c'est 16 bits.

Après

(Int32)(value1 << 16 | value2);

C'est ce que tu dis : ça décale value1 de 16 bits a gauche, ça fait un OU logique avec value1, et ça caste le tout en mot de 32 bits
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
Modifié par loupius le 30/10/2010 à 11:50
Tout à fait.
Peut-être aurait-il été plus judicieux d'écrire ainsi la fonction:
public static Int32 Merge(ushort poidsFort, ushort poidsFaible) 
{ 
  return (Int32)(poidsFort << 16 | poidsFaible);  
}
Bonne continuation.
0