We will find a way, we always have.

-interstellar

Computer Science/알고리즘

[알고리즘] 비트 연산

Redddy 2024. 2. 4. 21:05

대회하면서 매번 헷갈릴 때가 있어서 정리해두려고 한다.

 

특정 비트 1로 만들기

x = 12
x |= (1<<0)
print(x) # 13

 

 

1과 or 연산을 사용하여 비트 켜기.

 

특정 비트 0으로 만들기

 

x = 12 # 1100(2)
x &= ~(1<<3)
print(x) # 4

 

0과 and 연산을 사용하여 비트 끄기.

 

 

특정 비트 토글 시키기

 

x = 12 # 1100(2)
x ^= (1<<2)
print(x)

 

 

xor 연산을 사용하여 비트 토글 하기.

 

특정 비트 확인하기

 

타겟을 시프트 연산으로 최하위 비트로 이동 후 1 과 AND

x = 12 # 1100

print((x>>1)&1) # 0
print((x>>2)&1) # 1

 

0이면 꺼짐

1이면 켜짐

 

 

1을 타겟 비트로 위치로 시프트 연산하고 1과 AND

 

x = 12 # 1100

print(x&(1<<1)) # 0
print(x&(1<<2)) # 4

 

0이면 꺼짐

0이 아니면 켜짐