Java에서 정의한 비트 연산은 int, long, short, char 및 byte와 같은 정수 유형에 적용됩니다.
비트 연산자는 주로 피연산자의 이진 비트에 대한 연산을 수행하는 데 사용됩니다. 비트 연산은 각 이진수를 기준으로 계산을 나타냅니다. 연산 결과가 음수이면 보수 표현이 사용됩니다. .
Java 언어의 비트 연산자는 비트 논리 연산자와 비트 시프트 연산자의 두 가지 범주로 나뉩니다.
비트 AND 연산:
비트 AND 연산은 두 개의 정수 데이터 a와 b에 대해 비트 연산을 수행하고, 그 연산의 결과는 정수 데이터 c가 된다. 알고리즘은 다음과 같습니다. 두 데이터 a와 b의 해당 비트가 모두 1이면 c의 비트는 1이고, 그렇지 않으면 0입니다.
예를 들어:
a : 0 1 0 1 0 0 1 1
b : 0 0 1 1 1 0 1 0
c:0 0 0 1 0 0 1 0
비트별 OR 연산:
비트 OR 연산은 두 개의 정수 데이터 a, b에 대해 비트 연산을 수행하고, 그 연산의 결과는 정수 데이터 c이다. 알고리즘은 두 데이터 a와 b의 해당 비트가 모두 0이면 c의 비트는 0이고, 그렇지 않으면 1입니다.
예를 들어:
a : 0 1 0 1 0 0 1 1
b : 0 0 1 1 1 0 1 0
c: 0 1 1 1 1 0 1 1
비트별 NOT 연산:
비트별 NOT 연산은 정수 데이터 a에 대해 비트별 연산을 수행하고, 그 연산의 결과는 정수 데이터 c가 됩니다. 알고리즘은 다음과 같습니다. 데이터 a의 해당 비트가 0이면 c의 비트는 1이고, 그렇지 않으면 0입니다.
예를 들어:
a : 0 1 0 1 0 0 1 1
c:1 0 1 0 1 1 0 0
비트별 XOR 연산:
비트별 XOR 연산은 두 개의 정수 데이터 a와 b에 대해 비트별 연산을 수행하고, 그 연산의 결과는 정수 데이터 c가 된다. 알고리즘은 두 데이터 a와 b의 해당 비트가 동일하면 c의 비트는 0이고, 그렇지 않으면 1입니다.
예를 들어:
a : 0 1 0 1 0 0 1 1
b : 0 0 1 1 1 0 1 0
c:0 1 1 0 1 0 0 1
비트 단위 오른쪽 시프트 연산:
비트 오른쪽 시프트 연산의 알고리즘은 다음과 같습니다. 모든 숫자를 이진 형식의 해당 자릿수만큼 오른쪽으로 이동하고, 낮은 비트를 밖으로 이동(폐기)하고, 높은 비트의 빈 비트를 0으로 채웁니다.
예: 정수 83을 오른쪽으로 1비트 이동
변속 전 : 0 1 0 1 0 0 1 1
변속 후 : 0 0 1 0 1 0 0 1
비트 왼쪽 시프트 연산:
비트 왼쪽 이동 연산의 알고리즘은 모든 숫자를 이진 형식의 해당 자릿수만큼 왼쪽으로 이동하고, 상위 비트를 이동하고(폐기), 하위 비트의 빈 비트를 0으로 채우는 것입니다.
예: 정수 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은 부정 후 10101100입니다. 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. (a<<2=+c);}}
실행 결과는 다음과 같습니다.
a&b=18a|b=123~a=-84a^b=105a>>2=41a<<2=166