비트 연산자(bit operator)

2021. 3. 13. 17:41Java/한국어

비트 연산자는 각각의 비트를 대상으로 연산을 진행하고, 각 비트를 대상으로 진행된 연산 결과를 묶어서 하나의 연산 결과로 반환하는 연산자를 의미한다. 비트 연산자의 종류는 4가지(&,|,^,~)가 있다. 자칫 잘못하면 논리 연산자와 착각을 할 수 있는데, 논리 연산자는 기호를 두 번 쓰고, 비트 연산자는 한 번만 사용한다는 것이 것 보기에 가장 큰 차이이고, 또한 아래에 자세히 나타나겠지만, 결과도 다르다.

 

먼저, 각각의 기호와 정의를 보도록 하자.

종류 연산자 사용방법 설명
AND & a&b 변수 a와 b의 비트 단위의 AND 
OR | a|b 변수 a와 b의 비트 단위의 OR
XOR ^ a^b 변수 a와 b의 비트 단위의 XOR
NOT ~ ~a 변수 a의 단위의 부정

좀 더 직관적인 설명을 보려면, 검색창에 (AND,OR,XOR,NOT) gate의 사진을 참고하자.

각각의 비트 연산자의 예시는 다음과 같다.

int b = 5;  //00000101
		 
System.out.println(a|b); //00001111
System.out.println(a&b); //00000101
System.out.println(a^b); //00001010
		 
System.out.println(a>>2);  //00001111 -> 00000011 뒤로 2칸
System.out.println(b<<4);  //00000101 -> 01010000 앞으로 4칸
		 
byte c =10;
System.out.println("c = " + c); //00001010
System.out.println("~c = " + ~c); //11110101
System.out.println("~c+1 = " + (~c+1)); //11110101 + 00000001 = 11110110
System.out.println("~(c+1) = " + ~(c+1)); 
//00001010 + 00000001 = 00001011
//00001011 -> 11110100
		 
//-12 -> 11110100, -11 -> 11110101, -10->11110110
//음수를 만들때 양수의 이진법의 보수로 만든후 1을 더한다

여기서 추가로 알아야 할 점은, 양수를 음수로 또는 음수로 양수를 만들 때의 방법이다. 위의 코드 표에서 드러나듯 음수를 만들 때 먼저 양수의 이진법 다시 말해 예를 들어 3이면 00000011이다 그러면 음수로 만들기 위해 먼저 보수로 만들어야 한다(11111100) 그리고 가장 마지막에 1을 더 하면, 11111101이 나타나 둘을 더하면 00000000이 나오기에 음수인 -3이 만들어졌다.
    
   
     
    

'Java > 한국어' 카테고리의 다른 글

단항 연산자(Unary_operator)  (0) 2021.03.12
논리 연산자  (0) 2021.03.01
관계 연산자  (0) 2021.02.28
부호 연산자  (0) 2021.02.26
오버 플로우 (overflow)  (0) 2021.02.26