Test021 ~ 024 비트 단위 연산자
2020. 9. 1. 17:10
1. 비트열 반전 연산자 (~)
public class Test021 { public static void main(String[] args) { int a = 10, b = -10; System.out.printf("~a : %d\n", ~a); System.out.printf("~b : %d\n", ~b); } } // 실행 결과 /* ~a : -11 ~b : 9 계속하려면 아무 키나 누르십시오 . . . */
2. AND, OR, XOR 연산자 (&, |, ^)
public class Test022 { public static void main(String[] args) { int a = 13, b = 7; int c, d, e; c = a & b; // 비트 AND d = a | b; // 비트 OR e = a ^ b; // 비트 XOR System.out.printf("a & b : %d\n",c); System.out.printf("a | b : %d\n",d); System.out.printf("a ^ b : %d\n",e); } } // 실행 결과 /* a & b : 5 a | b : 15 a ^ b : 10 계속하려면 아무 키나 누르십시오 . . . */
3. 시프트 연산(<<, >>, <<<, >>>)
왼쪽 시프트연산을 한번 수행하면 2배가 되고 오른쪽으로 시프트연산을 한번 수행하면 1/2배가 된다.
public class Test024 { public static void main(String[] args) { // | int x = 128; // 00000000 00000000 00000000 10000000 System.out.printf("x << 3 : %d\n", x << 3); // 00000000 00000000 00000100 00000000 System.out.printf("x * 8 : %d\n", x * 8); // | System.out.printf("x >> 3 : %d\n", x >> 3); // 00000000 00000000 00000000 00010000 System.out.printf("x / 8 : %d\n", x / 8); System.out.printf("x << 24 : %d\n", x << 24); //--==>> x << 24 : -2147483648 // | // 10000000 00000000 00000000 00000000 } }
4. 두 수의 교환
일반적인 두 변수의 자리 바꿈은 temp와 같은 임시저장을 위한 변수를 만들어 이를 이용해 두 변수를 교환한다.
public class Test023 { public static void main(String[] args) { // ○ 일반적인 두 변수(a, b)의 자리 바꿈 int a=10, b=20; //-- 내용물을 바꾸기 위한 두 정수 int temp; //-- 임시 저장 변수 // 내용물을 바꾸기 전 확인 System.out.println("a : " + a + ", b : " + b); // 연산 및 처리(내용물 바꾸기 → 기본 대입 연산 활용) temp = a; a = b; b = temp; // 연산 처리 후 결과 확인 System.out.println("a : " + a + ", b : " + b); } }
이를 xor연산을 다음과 같이 수행하면 아래와 같이 간단하게 해결할 수 있다.
public class Test023 { public static void main(String[] args) { // ○ 비트 단위 연산자 "XOR" 연산자를 활용하여 // 두 변수에 담겨있는 내용(값) 바꾸기 // 주요 변수 선언 및 초기화 int x = 20, y = 23; // 각 변수에 담긴 내용물 확인 System.out.printf("x : %d, y : %d\n", x, y); // 연산 및 처리 /* x = x ^ y; y = y ^ x; x = x ^ y; */ y = y ^ x; x = x ^ y; y = y ^ x; // 연산 처리 후 결과 확인 System.out.printf("x : %d, y : %d\n",x, y); } } // 실행 결과 /* x : 20, y : 23 x : 23, y : 20 */
'JAVA > 자바 기본 프로그래밍' 카테고리의 다른 글
Test026 조건 연산자(삼항 연산자) (1) (0) | 2020.09.02 |
---|---|
Test025 논리 연산자 (0) | 2020.09.02 |
음의 정수를 표현하는 방법 (0) | 2020.09.01 |
Test020 자바의 입출력을 활용하여 사칙연산 하기 (0) | 2020.09.01 |
Test019 실수형 데이터타입의 정밀도 테스트 (0) | 2020.09.01 |