TIL 006 유용한 비트 연산

조성현·2021년 1월 6일
0

정글

목록 보기
7/21
post-custom-banner

📕 비트연산

비트연산은 알고리즘 TCP(외판원순환) 문제나, 네트워크ip패킷, 레지스트리 값 수정 등 다양하게 사용된다. 유용한 연산들을 기억할 수 있도록 모아 둔다.

n 번째 비트 켜기

👉 1 << n

bin(1<<0) = 0b1
bin(1<<2) = 0b100

n 번째 비트가 켜져 있는지 확인

👉 n & 1 << n

bin(100) = 0b1100100
bin(100) & 1<<2 = 100
bin(100) & 1<<3 = 0
1 if bin(100) & (1 << 2) else 0 = 1
1 if bin(100) & (1 << 3) else 0 = 0

n 개의 비트 모두 켜기

👉 (1 << n) - 1

bin(1<<1) - 1 = 0b1
bin(1<<2) = 0b11

정수의 2의 지수승 여부 확인

👉 n & (n - 1) == 0

bin(4) & bin(4) - 1 = 0b100 & 0b011 = 0
(0 == 0 = True)

bin(5) & bin(5) - 1 = 0b101 & 0b100 = 1
(1 == 0 = False)

2진수에서 1비트의 개수 구하기

👉 def count_bit(n):
return n % 2 + count_bit(n//2) if n >=2 else n

def bit_count(n):
    k = 0
    cnt = 0
    while n >=1 (1<<k):
         if n & (1 << k) != 0:
             cnt += 1
         k += 1
     return cnt

Boolean 토글

👉 boolean ^= True

example = True
example ^= True
print(example) -> False
example ^= True
print(example) -> True

https://shoark7.github.io/programming/knowledge/some-useful-bit-tricks-and-usages

profile
Jazzing👨‍💻
post-custom-banner

0개의 댓글