Понимание побитовых операций и их применение в Java
Я думаю, понимаю, что они в основном делают - работают с битами (переворачивание, сдвиг, инвертирование и т. Д.).
Моя проблема в том, что я не знаю, когда мне когда-нибудь понадобится их использовать, и я не думаю, что полностью понимаю биты.
Я знаю, что в байте 8 бит, и я знаю, что биты0
или же1
, Здесь я начинаю путаться ... Я считаю, что типы данных по-разному определяют комбинации битов. Так что, если я объявлюint
32 бита отводятся для чисел, если я объявляю символ, 8 бит откладываются и биты для этого типа данных определяют букву.
Работая с этой идеей, я сделал следующую базовую операцию в Java, которая смущает меня:
int num = 00000010;
System.out.println(num);
Это печатает8
и если я определюnum
сюда:
int num = 00000100;
System.out.println(num);
Это печатает64
Поэтому, чтобы попрактиковаться с побитовыми операциями (просто ради этого), я попробовал это:
int num = 00000010 << 1;
System.out.println(num);
И это печатает16
где, как я думал, он сдвинет биты на единицу влево и напечатает64
.
Что здесь происходит, и когда мне когда-нибудь понадобится применить этот метод манипулирования битами?