JAVA 2강_1_비트연산자, 쉬프트연산자

열라뽕따히·2024년 1월 28일

JAVA

목록 보기
9/79

비트연산자

: 비트(0, 1)를 이용하여 연산하는 연산자

  • & ( and ) : 두 비트의 조건이 참(1)인 경우 1을 반환
    그 외에는 0을 반환
  • | ( or ) : 두 비트 중 하나만 조건이 참(1)인 경우 1을 반환
    그 외에는 0을 반환
  • ^ ( xor ) : 두 비트 중 서로 다른 경우에만 참(1)을 반환
    그 외에는 0을 반환

==> 비트 연산을 하기 위해서는 십진수를 이진수로 변환하는 과정이 필요함


**십진수를 이진수로 변환하는 방법 (아래 이미지 참고)





============================코드============================

int num1 = 10, num2 = 5, result;
		
	// 비트연산을 하기 위해서는 우선적으로 십진수를 이진수로 변환하는 작업이 필요
		// num1 = 1010, num2 = 0101                
        
	// and 연산 
		result = num1 & num2;  // 1010 & 0101 ==> 0000
		System.out.println("and result >>> " + result);  // 0
		System.out.println();
		
	// or 연산 
		result = num1 | num2;  // 1010 | 0101 ==> 1111
		System.out.println("or result >>> " + result);  // 15  -> 2^3 + 2^2 + 2^1 + 1
		System.out.println();
		
	// xor 연산 
		result = num1 ^ num2;  // 1010 ^ 0101 ==> 1111
		System.out.println("xor result >>> " + result);  // 15
		System.out.println();

============================실행============================





쉬프트연산자 (비트 이동 연산자)

  • 비트를 대상으로 왼쪽 / 오른쪽으로 비트를 밀어서 연산을 수행하는 연산자

  • 왼쪽 쉬프트 ( << ) : 왼쪽으로 비트수만큼 이동하는 연산자 / 오른쪽에 비어 있는 빈 칸(비트)는 0으로 채워짐

  • 부호 있는 오른쪽 쉬프트 ( >> ) : 오른쪽으로 비트 수만큼 이동하는 연산자 / 왼쪽에 비어있는 빈 칸(비트)은 부호비트로 채워짐

  • 부호 없는 오른쪽 쉬프트 ( >>> ) : 오른쪽으로 비트 수만큼 이동하는 연산자 / 왼쪽에 비어 있는 빈칸(비트)은 무조건 0으로 채워짐

  • 부호비트 : 양수( 0 ), 음수 ( 1 )




============================코드============================

int num1 = 10, num2 = 5;
		
	// 비트가 이동이 되기 때문에 십진수를 이진수로 변환하는 것이 필요     
	// num1 = 1010, num2 = 0101;
		
	// 왼쪽 쉬프트(<<)
		System.out.println("왼쪽 쉬프트 >>> " + (num1 << 2));  // 101000 -> 2^5 + 2^3 --> 40
		
	// 오른쪽 쉬프트(>>)
		System.out.println("오른쪽 쉬프트 >>> " + (num1 >> 1)); // 0101 양수인 경우에는 1, 음수인 경우에는 0 --> 5
		
		System.out.println("오른쪽 쉬프트 >>> " + (num2 >> 1)); // 0010 --> 2

============================실행============================

0개의 댓글