Целочисленные битовые операторы
Для целых числовых типов данных — 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