Битовые операции, определенные в Java, применяются к целочисленным типам, таким как int, long, short, char и byte.
Побитовые операторы в основном используются для выполнения операций над двоичными битами операндов. Побитовые операции представляют собой вычисления, основанные на каждой двоичной цифре. Как операнды, так и результаты операции являются целочисленными значениями. Если результат операции является отрицательным числом, используется представление дополнения. .
Битовые операторы в языке Java делятся на две категории: битовые логические операторы и операторы сдвига битов.
Побитовая операция И:
Побитовая операция И выполняет побитовую операцию над двумя целочисленными данными a и b, и результатом операции являются целочисленные данные c. Алгоритм таков: если соответствующие биты двух данных a и b равны 1, то бит c равен 1, в противном случае он равен 0.
Например:
а: 0 1 0 1 0 0 1 1
б: 0 0 1 1 1 0 1 0
в: 0 0 0 1 0 0 1 0
Побитовая операция ИЛИ:
Побитовая операция ИЛИ выполняет побитовую операцию над двумя целочисленными данными a и b, и результатом операции являются целочисленные данные c. Алгоритм таков: если соответствующие биты двух данных a и b равны 0, то бит c равен 0, в противном случае он равен 1.
Например:
а: 0 1 0 1 0 0 1 1
б: 0 0 1 1 1 0 1 0
в: 0 1 1 1 1 0 1 1
Побитовая операция НЕ:
Побитовая операция НЕ выполняет побитовую операцию над целочисленными данными a, и результатом операции являются целочисленные данные c. Алгоритм таков: если соответствующий бит данных a равен 0, то бит c равен 1, в противном случае он равен 0.
Например:
а: 0 1 0 1 0 0 1 1
в: 1 0 1 0 1 1 0 0
Побитовая операция XOR:
Побитовая операция XOR выполняет побитовую операцию над двумя целочисленными данными a и b, и результатом операции являются целочисленные данные c. Алгоритм таков: если соответствующие биты двух данных a и b одинаковы, то бит c равен 0, в противном случае он равен 1.
Например:
а: 0 1 0 1 0 0 1 1
б: 0 0 1 1 1 0 1 0
в: 0 1 1 0 1 0 0 1
Побитовая операция сдвига вправо:
Алгоритм операции побитового сдвига вправо следующий: переместить все числа вправо на соответствующее количество цифр в двоичном виде, сдвинуть (отбросить) младшие биты и заполнить нулями пустые биты в старших битах.
Например: сдвиньте целое число 83 вправо на 1 бит.
До переключения: 0 1 0 1 0 0 1 1
После смещения: 0 0 1 0 1 0 0 1
Побитовая операция сдвига влево:
Алгоритм операции побитового сдвига влево таков: сдвинуть все числа влево на соответствующее количество цифр в двоичной форме, сместить старшие биты (отбросить), а пустые биты в младших битах заполнить нулями.
Например: сдвиньте целое число 83 влево на 1 бит.
До переключения: 0 1 0 1 0 0 1 1
После смены: 1 0 1 0 0 1 1 0
Пример:
publicclassMain{publicstaticvoidmain(String[]args){inta=83;/*83=01010011*/intb=58;/*58=00111010*/intc=0;c=a&b; /*18=00010010*/System.out.println(a&b=+c);c=a|b;/*123=01111011*/System.out.println(a|b=+c);c=~a ;/*01010011 равно 1 после отрицания 0101100, дополнением 10101100 является 11010100, -84=11010100*/System.out.println(~a=+c);c=a^b;/*105=01101001*/System.out.println( a^b=+c);c=a>>1;/*41=00101001*/System.out.println(a>>2=+c);c=a<<1;/*166=10100110* /System.out.println(a<<2=+c);}}
Результаты бега следующие:
a&b=18a|b=123~a=-84a^b=105a>>2=41a<<2=166