Introduzione alla manipolazione dei bit

Di solito, un programmatore lavora su variabili di tipi di dati come int, float, double, String o raccolte come Array, List, ArrayList e così via. In alcuni casi, i programmatori devono approfondire i dati a livello di byte e di bit per estrarre e manipolare i dati. Lingue come Java e C # ti consentono di manipolare i dati a livello di bit, il che significa che hai accesso a un bit specifico in un byte. In questo argomento, impareremo la manipolazione dei bit in Java.

La manipolazione dei bit è spesso necessaria quando si lavora su Compressione dei dati e Crittografia dei dati in cui il programmatore deve estrarre i dati a livello di bit per codificare, decodificare o comprimere i dati originali. Ci sono molte altre applicazioni della manipolazione di Bit che vedremo più avanti in questo articolo.

Java supporta lo spostamento a 3 bit e gli operatori a 4 bit per eseguire operazioni a livello di bit. Questi operatori possono essere utilizzati su tipi integrali (int, short, long e byte) per eseguire operazioni a livello di bit.

Operatori Java Bitwise e Bitshift

OperatoreDescrizione
&Bitwise AND
|OR bit a bit
~Complemento bit a bit
<<Tasto maiuscolo di sinistra
>>Maiusc destro
^Bitwise XOR
>>>Maiusc destro non firmato

Operatori di manipolazione di bit in Java

diamo un'occhiata agli operatori in modo più dettagliato

1) OR bit a bit

Questo è un operatore binario che accetta 2 operandi e indicato dal simbolo “| “. L'operatore bit a bit confronta i bit corrispondenti dei due operandi. Se uno qualsiasi dei bit dell'operando è 1, l'uscita è 1 in caso contrario sarà 0.

Esempio

15 = 00001111 (In Binary)
27 = 00011011 (In Binary)
Bitwise OR Operation of 15 and 27
00001111
| 00011011
________
00011111 = 31 (In decimal)

Programma Java

class BitwiseOR (
public static void main(String() args) (
int operand1 = 15, operand2 = 27, output
output= operand1 | operand2;
System.out.println(output);
)
)

Uscita: 31

2) AND bit a bit

Questo è anche un operatore bit a bit che accetta 2 operandi e indicato dal simbolo “&”. l'operatore bit a bit confronta i bit corrispondenti dei due operandi. Se entrambi i bit dell'operando sono 1, l'uscita è 1, altrimenti 0.

Esempio

15 = 00001111 (In Binary)
27 = 00011011 (In Binary)
Bitwise AND Operation of 15 and 27
00001111
| 00011011
________
00001011 = 11 (In decimal)

Programma Java

class BitwiseAND (
public static void main(String() args) (
int operand1 = 15, operand2 = 27, output
output= operand1 & operand2;
System.out.println(output);
)
)

Uscita: 11

3) Complemento bit per bit

A differenza degli altri due operatori di cui abbiamo discusso finora, questo richiede solo un operando e indicato dal simbolo "~". Questo operatore inverte il bit dell'operando. Se il bit dell'operando è 0, lo converte in 1 e viceversa.

Esempio

15 = 00001111 (In Binary)
Bitwise complement Operation of 15
~ 00001111
________
11110000 = 240 (In decimal)

Programma Java

class BitwiseComplement (
public static void main(String() args) (
int operand= 15, output;
output= ~operand;
System.out.println(output);
)
)

Uscita: -16

Nota: quando si esegue il programma Java si otterrà -16 come output anziché 240 poiché il compilatore mostra il complemento di 2 di quel numero, ovvero nozione negativa del numero binario.

Il complemento di 2 di qualsiasi numero equivale a - (n + 1) dove n è il numero il cui complemento di 2 deve essere calcolato. Nel nostro caso il complemento a 2 dell'operando 15 è -16, che è anche l'output del programma.

4) XOR bit a bit

Bitwise XOR è un operatore binario che accetta 2 operandi e indica un simbolo “^”. questo operatore confronta i bit corrispondenti dei due operandi. Se i bit corrispondenti dei due operandi sono diversi, ciò dà 1 come output altrimenti 0.

L'operatore XOR bit a bit è equivalente a (bit a bit OR + complemento a bit)

Esempio

15 = 00001111 (In Binary)
27 = 00011011 (In Binary)
Bitwise XOR Operation of 15 and 27
00001111
00011011
________
00010100 = 20 (In decimal)

Programma Java

class BitwiseXor (
public static void main(String() args) (
int operand1= 15, operand2 = 27, output;
output = operand1 operand2;
System.out.println(output);
)
)

Uscita: 20

5) Maiusc firmato a sinistra

L'operatore di spostamento bit a sinistra sposta il modello di bit verso sinistra per un certo numero di volte specificato nell'operando. L'operatore di spostamento a sinistra è indicato dal simbolo "<<".

Esempio

123 (In binary: 01111011)
123 << 1 evaluates to 246 (In binary: 011110110)
123 << 2 evaluates to 492 (In binary: 0111101100)
123 << 3 evaluates to 984 (In binary:01111011000)

Programma Java

class LeftShiftOperator (
public static void main(String() args) (
int operand = 123;
System.out.println(operand << 1);
System.out.println(operand << 2);
System.out.println(operand << 3);
)
)

uscita: 246, 492, 984

6) Maiusc firmato a destra

L'operatore di spostamento a destra firmato funziona esattamente come l'operatore di spostamento a sinistra solo perché aggiunge zero bit vengono spostati nella posizione di ordine superiore.

Esempio

123 (In binary: 01111011)
123 >> 1 evaluates to 61 (In binary: 00111101)
123 >> 2 evaluates to 30 (In binary: 00011110)
123 >> 3 evaluates to 15 (In binary:00001111)

Programma Java

class RightShiftOperator (
public static void main(String() args) (
int operand = 123;
System.out.println(operand >> 1);
System.out.println(operand >> 2);
System.out.println(operand >> 3);
)
)

Uscita: 61, 30, 15

7) Spostamento a destra senza segno

L'operatore di spostamento a destra sposta lo zero nella posizione più a sinistra del certo numero di bit specificato nell'operando.

Programma Java

class UnSignedRightShiftOperator (
public static void main(String() args) (
int operand = 123;
System.out.println(operand >>> 1);
System.out.println(operand >>> 2);
System.out.println(operand >>> 3);
)
)

Uscita : 61, 30, 15

Conclusione - Manipolazione dei bit in Java

Ora che abbiamo raggiunto la fine dell'articolo, concludiamo riassumendo il punto chiave di cui abbiamo discusso in questo articolo. Abbiamo visto cos'è un po 'di manipolazione e i suoi diversi casi d'uso. Abbiamo anche appreso i diversi tipi di operatori bit a bit (Bitwise AND, Bitwise OR, Bitwise Complement e Bitwise XOR) e gli operatori di spostamento dei bit (operatore di spostamento a sinistra firmato, operatore di spostamento a destra firmato e operatori di spostamento a destra senza segno) insieme a un esempio e un campione Programma Java che spiega i singoli operatori.

Articoli consigliati

Questa è una guida alla manipolazione dei bit in Java. Qui discutiamo in dettaglio gli Operatori Java Bitwise e Bitshift con esempi e programmi Java e il suo output. Puoi anche leggere il seguente articolo per saperne di più -

  1. Cos'è l'interfaccia Java?
  2. Strumenti Java
  3. Python Frameworks
  4. Operatori booleani in Java

Categoria: