JAVA

[JAVA] 비트연산자

집한구석 2022. 2. 6. 13:42
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타입
  1. 16진수의 정수를 2진수로 변환 (결과 : 10010001101000101011001111000)
  2. 10진수의 정수를 2진수로 변환 (결과 : 10)
  3. byte타입 값을 2진수로 변환 (결과 : 11110)

Integer.bitCount

정수의 값을 비트단위로 변환한 후, 1의 개수를 카운트해서 구해줌

Integer.bitCount(30)
  1. 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