Программирование на языке Java

Целочисленные битовые операторы


Для целых числовых типов данных — long, int, short, char и byte, определен дополнительный набор операторов, с помощью которых можно проверять и модифицировать состояние отдельных битов соответствую­щих значений. В таблице приведена сводка таких операторов. Операторы битовой арифметики работают с каждым битом как с самостоятельной величиной.



Оператор

Результат

Оператор

Результат

~

побитовое унарное отрицание (NOT)

&

побитовое И (AND)

&=

побитовое И (AND) с присваиванием

|

побитовое ИЛИ (OR)

|=

побитовое ИЛИ (OR) с присваиванием

^

побитовое исключающее ИЛИ (XOR)

^=

побитовое исключающее ИЛИ (XOR) с присваиванием

>>

сдвиг вправо

>> =

сдвиг вправо с присваиванием

>>>

сдвиг вправо с заполнением нулями

>>>=

сдвиг вправо с заполнением нулями с присваиванием

<<

сдвиг влево

<<=

сдвиг влево с присваиванием

Пример программы, манипулирующей с битами

В таблице, приведенной ниже, показано, как каждый из операторов битовой арифметики воздействует на возможные комбинации битов своих операндов. Приведенный после таблицы пример иллюстрирует ис­пользование этих операторов в программе на языке Java.

А

В

OR

AND

XOR

NOT A

0

0

0

0

0

1

1

0

1

0

1

0

0

1

1

0

1

1

1

1

1

1

0

0

class Bitlogic {

public static void main(String args []) {

String binary[] = { "OOOO", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001",      "1010", "1011", "1100", "1101",

"1110", "1111" };

int a = 3;   //     0+2+1  или двоичное 0011




int b = 6;   //     4+2+0  или двоичное 0110



int c = a | b;



int d = a & b;



int e = a ^ b;



int f = (~a & b) | (a & ~b);



int g = ~a & 0x0f;



System.out.println(" a = " + binary[a]);



System.out.println(" b = " + binary[b]);



System.out.println(" ab = " + binary[c]);



System.out.println(" a&b = " + binary[d]);



System.out.println(" a^b = " + binary[e]);



System.out.рrintln("~a&b|а^~Ь = " + binary[f]);



System.out.println(" ~a = " + binary[g]);



} }



Ниже при­ веден результат, полученный при выполнении этой программы:

С: \> Java BitLogic

a = 0011



b = 0110



a | b = 0111



a & b = 0010



a ^ b = 0101



~a & b | a & ~b = 0101



~а = 1100




Содержание раздела