728x90
비트연산자
- 비트(bit) 단위로 논리 연산을 할때 사용하는 연산자
- 기본적으로 컴퓨터는 8bit의 공간 기준으로 사용함
- 8bit == 1byte
- 실수형을 제외한 모든 기본형에서 사용이 가능함
비트 연산자 | 설명 |
& | 대응되는 비트가 모두 1이면 1을 반환함 (AND연산) |
| | 대응되는 비트중에서 하나라도 1이면 1을 반환 (OR연산) |
^ | 대응되는 비트가 서로 다르면 1을 반환 (XOR연산) |
~ | 비트를 1이면 0으로, 0이면 1로 반전 (NOT연산) |
<< | 지정한 수만큼 비트들을 전부 왼쪽으로 이동시킴 (LEFT SHIFT연산) |
>> | 부호를 유지하면서 지정한수 만큼 전부 오른쪽으로 이동시킴 (RIGHT SHIFT연산) |
Bit연산 관련 메소드
Integer.toBinaryString
10진수나 16진수의 정수를 비트 단위의 문자열로 간단하게 바꿀수 있게 해주는 메소드
Integer.toBinaryString(0x12345678) //16진수
Integer.toBinaryString(2) //10진수
Integer.toBinaryString((byte) 30) //byte타입
- 16진수의 정수를 2진수로 변환 (결과 : 10010001101000101011001111000)
- 10진수의 정수를 2진수로 변환 (결과 : 10)
- byte타입 값을 2진수로 변환 (결과 : 11110)
Integer.bitCount
정수의 값을 비트단위로 변환한 후, 1의 개수를 카운트해서 구해줌
Integer.bitCount(30)
- Bit결과 값은 11110이며, 1의 개수가 4개이므로 결과가 4로 반환
AND 연산 (&)
두수 각자리수에 대해 둘다 1인 경우 1로 변환
int a = 8;
int b = 10;
System.out.println(Integer.toBinaryString(a)); //1000
System.out.println(Integer.toBinaryString(b)); //1010
System.out.println(Integer.toBinaryString(a & b)); //1000
OR 연산 (|)
두수 각자리수가 하나만 1이면 1로 변환
int a = 8;
int b = 10;
System.out.println(Integer.toBinaryString(a)); //1000
System.out.println(Integer.toBinaryString(b)); //1010
System.out.println(Integer.toBinaryString(a | b)); //1010
XOR 연산 (^)
두수 각자리수가 다른 경우 1로 변환
int a = 8;
int b = 10;
System.out.println(Integer.toBinaryString(a)); //1000
System.out.println(Integer.toBinaryString(b)); //1010
System.out.println(Integer.toBinaryString(a ^ b)); //10
NOT 연산 (~)
각 자리수를 반대로 변환
int a = 10;
System.out.println(~a); //10진수 반대, -11
System.out.println(Integer.toBinaryString(~a)); //2진수, 11111111111111111111111111110101
기본 리마인드 정리, 가끔 참고
'JAVA' 카테고리의 다른 글
[JAVA] 하이버네이트(HIBERNATE) DDL-AUTO 옵션 정리 (0) | 2022.04.19 |
---|---|
[JAVA] 어댑터 패턴 (0) | 2022.04.06 |
[JAVA] PriorityQueue (0) | 2022.02.06 |
[JAVA] 람다표현식 (0) | 2022.01.01 |
[JAVA] 제네릭 (0) | 2021.12.15 |