Que fait cette fonction?

sergio -  
loupius Messages postés 789 Statut Membre -
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

  1. francis
     
    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
    1. loupius Messages postés 789 Statut Membre 148
       
      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