Algorithm/개념

[Python] 비트 연산자 - &, |, ^, ~, <<, >>

씨주 2024. 5. 16. 23:52

📍 비트 연산자

기호 기능 설명
a & b 비트 AND a와 b의 비트를 AND 연산
a | b 비트 OR a와 b의 비트를 OR 연산
a ^ b 비트 XOR a와 b의 비트를 XOR 연산
~a 비트 NOT a의 비트를 뒤집음
a << b 비트 LEFT SHIFT a의 비트를 b번 왼쪽으로 이동
a >> b 비트 RIGHT SHIFT a의 비트를 b번 오른쪽으로 이동

 

✅ AND

bin(0b1101 & 0b1001)
# '0b1001'

 

연산자 이진수 십진수
& 1101 13
1001 9
result 1001 9

 

✅ OR

bin(0b1101 | 0b1001)
# '0b1101'

 

연산자 이진수 십진수
| 1101 13
1001 9
result 1101 13

 

✅ XOR

bin(0b1101 ^ 0b1001)
# '0b0100'

 

연산자 이진수 십진수
^ 1101 13
1001 9
result 0100 4

 

✅ NOT

bin(~0b1101)
# '-0b1110'

 

연산자 이진수 십진수
~ 1101 13
result -1110 -14

 

연산 순서

1. 1101 -> -0010 (부호 및 숫자 뒤집기)

2. -0010 -> -1101 (부호 제외 다시 뒤집기)

3. -1101 -> -1110 (1 더해주기)

 

✅ <<

bin(0b1101 << 1)
# '0b11010'

 

연산자 이진수 십진수
<< 1101 13
1 1
result 11010 26

 

왼쪽으로 한칸씩 이동 = 13 * (2의 1승)

 

✅ >>

bin(0b1101 >> 1)
# '0b110'

 

연산자 이진수 십진수
>> 1101 13
1 1
result 110 6

 

왼쪽으로 한칸씩 이동 = 13 * (2의 -1승)

 

✅ 응용

SHIFT의 경우 2의 제곱 수 문제에서 사용할 수 있다.

 

[프로그래머스 Level 0] 세균 증식(Python)

 

[프로그래머스 Level 0] 세균 증식(Python)

📝 Level 0. 세균 증식더보기📌 문제 설명 어떤세균은 1시간에 두배만큼 증식한다고 합니다. 처음 세균의 마리수 n과 경과한 시간 t가 매개변수로 주어질 때 t시간 후 세균의 수를 return하도록 solu

heejudeveloper.tistory.com

 

 

참고 : https://un-gaemii.tistory.com/6