L'opérateur au niveau du bit a déjà été expliqué tout à fait à quelques reprises déjà. Disons qu' buffer[0]
contient de 1, buffer[1]
contient 2 et index
de 0 et de remplacer ces valeurs:
short sample = (short)((buffer[1] << 8) | buffer[0]);
short sample = (short)((1 << 8) | 2);
Maintenant, un semi-représentation graphique. C'est le chiffre 1 dans une représentation binaire:
0000 0001
Décalage de huit positions de la gauche serait de faire de ce numéro de "dépassement" à partir d'un seul octet. Cependant, le compilateur est assez intelligent pour nous donner plus de place.
0000 0001 0000 0000
Maintenant, la partie droite: le numéro 2 ressemble à cela en binaire:
0000 0010
Et l'opérateur " | " (or au niveau du bit) en fait il suffit de mettre la deux valeurs et la comparaison bit par bit.
0000 0001 0000 0000
| 0000 0000 0000 0010
= 0000 0001 0000 0010
Et la dernière valeur est stockée dans votre "exemple" de la variable (dans ce cas, 258.) L'opération inverse est similaire:
buffer[0] = sample & 255;
buffer[1] = (sample & (255 << 8)) >> 8;