비트 연산자(bit operator)
2021. 3. 13. 17:41ㆍJava/한국어
비트 연산자는 각각의 비트를 대상으로 연산을 진행하고, 각 비트를 대상으로 진행된 연산 결과를 묶어서 하나의 연산 결과로 반환하는 연산자를 의미한다. 비트 연산자의 종류는 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 |