public class Test {
public static void main(String[] args) {
// 1. 왼쪽으로 이동( << )
// 0000 0000 0000 0000 0000 0000 0000 0101 그런 다음 2비트를 왼쪽으로 이동한 후 하위 비트는 0으로 채워집니다. //
// 0000 0000 0000 0000 0000 0000 0001 0100을 10진수로 변환하면 20
System.out.println(5 << 2);/ / 실행 결과는 20
// 2. 오른쪽으로 이동(>> )하고 상위 비트에 부호 비트를 채웁니다.
// 0000 0000 0000 0000 0000 0000 0000 0101 그런 다음 오른쪽으로 2비트 이동하고 상위 비트를 0으로 채웁니다.
// 0000 0000 0000 0000 0000 0000 0000 0001
System.out.println(5 >> 2) // 연산 결과는 다음과 같습니다. 1
// 3. 부호 없는 오른쪽 시프트( > 5를 오른쪽으로 3비트, -5를 3비트, 부호 없는 오른쪽 시프트를 각각 3비트씩 이동합니다.
System.out.println(5 > > 3); // 결과는 0입니다.
System.out.println(-5 >> 3);// 결과는 -1입니다.
System.out.println(-5 >> ;> 3);// 결과는 536870911
// 4. 비트 AND ( & )
// 비트 AND: 첫 번째 피연산자의 n번째 비트가 해당 비트의 n번째 비트에 위치합니다. 두 번째 피연산자. 둘 다 1이면 결과의 n번째 비트도 1이고, 그렇지 않으면 0입니다.
System.out.println(5 & 3);//결과는 1입니다
System.out .println(4 & 1);//결과는 0입니다
// 5. 비트별 OR( | )
// 첫 번째 피연산자의 n번째 비트는 두 번째 피연산자의 n번째 비트에 위치합니다. 피연산자 중 하나가 1이면 결과의 n번째 비트도 1이고, 그렇지 않으면 0입니다.
System.out.println(5 | 3);//결과는 7
// 6. 비트 XOR(^)
// 첫 번째 피연산자 n은 두 번째 피연산자의 n번째 비트에 위치합니다. 반대로 결과의 n번째 비트도 1이고, 그렇지 않으면 0입니다. 🎜> System.out.println(5 ^ 3); //결과는 6
// 7. 비트 부정( ~ )
// 피연산자의 n번째 비트가 1이면 결과의 n번째 비트는 0이고 그 반대도 마찬가지입니다.
System.out.println(~5); // 결과는 -6
}
}