티스토리 뷰

기본 지식

[기본] 비트 연산자

최MAX 2022. 3. 22. 17:55

언젠가 분명히 배웠지만, 별로 안중요한 것 같아서 소홀히 했던 비트 연산자를 복기해보자. (코딩 테스트 대비..)

 

비트 논리 연산자 (&, |, ^, ~)

 & : AND (논리곱)

두 비트 모두 1일때만 1

 

 | : OR (논리합)

두 비트 모두 0일때만 0 (나머지는 다 1)

 

 ^ : XOR(배타적 논리합)

: 두 비트가 같으면 0, (1 ^ 1 = 0, 1 ^ 0 = 1, 0 ^ 0 = 0)

 

 ! : NOT (논리 부정)

: 보수 ( 1 → 0, 0 → 1)

 

그냥 이런식으로 쓰면 된다.

public static void main(String[] args) {
    System.out.println("45 & 25 = " + (45 & 25));
    System.out.println("45 | 25 = " + (45 | 25));
}

실행 결과

 

지금까지는 뭐.. 안중요할 것 같고

 

비트 이동 연산자 ( <<, >>, >>> )

언젠가 알고리즘 문제를 봤는데 비트 이동을 이용한 문제여서 손도 못대봤다. 비트 마스킹이었나...

 

 a << b

정수 a의 각 비트를 b만큼 왼쪽으로 이동. 빈자리는 0으로 채워짐.

 

 a >> b

b만큼 오른쪽으로 이동. 빈자리는 정수 a의 MSB(최상위 부호 비트)와 같은 값으로 채워짐.

 

 a >>> b

b만큼 오른쪽으로 이동. 빈자리는 0으로 채워짐

 

System.out.println("1 << 3 = " + (1 << 3));

0 0 0 1 &rarr; 1 0 0 0 = 8

잘 나오는 구만.

 

 

막상 보니 별로 안중요한거 같기도하다. 조만간 비트 건드려야하는 알고리즘 문제 풀어서 올려야겠다.

 

'기본 지식' 카테고리의 다른 글

[Spring] Active profiles 변경  (0) 2023.03.16
[AWS] EC2 HostName 변경하기  (0) 2023.03.04
[AWS] Spring 프로젝트에 Code Deploy 적용하기  (0) 2023.03.04
[AWS] Code Deploy 설정하기  (0) 2023.03.03
[Linux] IO Redirection  (0) 2023.02.06
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함