Les programmeurs doivent parfois manipuler des données au niveau des bits et des octets. Ceci est particulièrement le cas lors du développement de logiciels pour tester les équipements, les réseaux, les systèmes d’exploitation ou établir une communication directe avec le matériel. Quel que soit le cas, Java fournit les capacités pour ce type de manipulation.
Cet article fournit des informations de base liées à cette fonctionnalité.
Bits et octets
Un bit est dérivé de l’expression « binary digit ou chiffre binaire», représenté par 0 ou 1. Ces deux nombres apparemment simples peuvent porter beaucoup d’informations lorsqu’ils sont combinés. Le 0 signifie fondamentalement off / false et 1 signifie on / true. Dit simplement, un commutateur peut signaler l’un des deux évènements, soit off (0) ou sur (1).
L’utilisation de deux commutateurs donne 22 = 4 signaux (00, 01, 10, 11). Trois commutateurs fourniraient 23 = 8 signaux (000, 001, 010, 011, 100, 101, 110, 111). Quatre commutateurs , 16 signaux, et ainsi de suite.
Les bits individuels, lorsqu’ils sont combinés en un groupe de huit, sont appelés un octet (8 bits = 1 octet). Le nombre de signaux fournis par le traitement 8 bits ou 1 octet est 28 = 256. Lorsque le nombre d’octets augmente, l’unité devient Kilobyte (210), Megabyte (220), Gigabyte (230) et ainsi de suite.
Opérations bit à bit
En logique, une opération bit à bit est un calcul manipulant les données directement au niveau des bits, selon une arithmétique booléenne
Les opérations bit à bit courantes comprennent des opérations logiques bit par bit et des opérations de décalage des bits, vers la droite ou vers la gauche.
Il y a sept opérateurs binaires en Java:
- AND binaire (&),
- OR (|),
- XOR (^),
- décalage à gauche (<<),
- décalage à droite signé (>>),
- décalage à droite non signé (>>>),
- et complément binaire (~).
Ils fonctionnent de la manière indiquée ci-dessus à l’aide de tables de vérité. Les opérateurs de décalage vers la gauche et de décalage vers la droite seront expliqués plus loin dans l’article.