Réponse acceptée !
Salut,
Je pense que c'est parce que a, b, c et d sont convertis en int.
Les opérateur prédéfinis pour le décalage de bits sont:
int operator <<(int x, int count);
uint operator <<(uint x, int count);
long operator <<(long x, int count);
ulong operator <<(ulong x, int count);
Comme tu vois, pas de byte, donc tes bytes sont convertis en ce qu'il y a de plus proche, un int
"Les opérandes sont convertis vers les types de paramètres de l'opérateur sélectionné et le type du résultat correspond au type de retour de l'opérateur."
Lien