Мы помогаем ИТ-компаниям оптимально настроить процессы менеджмента и разработки

Найти

(067) 536-87-70

(095) 492-65-67

 

Побитовые операции над примитивными типами данных

22.03.19

Хранить какие-то данные в переменных - это конечно хорошо, но было бы хорошо еще и уметь проводить с ними всякие операции.

Побитовые операции - это операции над отдельными битами целых, и только целых, чисел. В операциях можно использовать двоичное или десятичное представление чисел.

Для простоты рассмотрим операции с помощью двух переменных a и b в двоичном представлении:

int a = 0110;        //Двоичное представление числа 6

int b = 1010;        //Двоичное представление числа 10

Логическое умножение (&) - если у обоих операндов 1, то вернет 1, иначе 0:

int c = a & b;        //Результат c = 0010

Логическое сложение (|) - если хоть у одного операнда 1, то вернет 1, иначе 0:

int d = a | b;        //Результат d = 1110

Логическое исключающее ИЛИ (^) (еще называют XOR) - если у одного операнда 1, а у другого 0, то вернет 1, иначе 0:

int e = a ^ b;       //Результат e = 1100

Логическое отрицание (~). Действует на один операнд. Инверсия значений разрядов - если разряд равен 1, то вернет 0, если равен 0, то вернет 1:

int f = ~a;          //Результат f = 1001

доктор бит

Также нужно не забыть упомянуть про операции сдвига:

x<<y двигает разряды числа x на y значений влево

x>>y двигает разряды числа x на y значений вправо

int g = a<<2;     //Результат g = 0001 1000 или g=24

int h = 16>>3;   //Результат h = 0010 или h=2

Все это можно проверить при помощи вывода в консоль:

public class Main{

          public static void main(String[] args){

          int h = 16>>3;       //Результат h = 0010 или h=2

          System.out.println(h);

          }

}

Эти операции особенно помогут при изучении некоторых методов классов из стандартной библиотеки Java. Также это будет полезно при реализации оптимизации, ведь побитовые операции быстрее арифметических, однако о них уже в следующей статье.

 

Автор

photo
Сергей Посьмашный
Java blogger, физик, путешественник