본문 바로가기
개발/Algorithm 문제 풀이

[Python] 비트마스킹 정리

by DenverAlmighty 2020. 8. 28.
반응형

1. 진법 변환

 

#10진수 -> n진수 변환 : bin(NUM), oct(NUM), hex(NUM)
num = 18
print(bin(num)) #2진수. 0b10010
print(oct(num)) #8진수. 0o22
print(hex(num)) #16진수. 0x12


# n진수 -> 10진수 변환 : int(NUM, 현재 진수)
num = '10010'
print(int(num, 2))
num = '22'
print(int(num, 8))
num = '12'
print(int(num, 16))
# 결과 모두 18

 

 

 

2. 연산자

AND : &

OR : |

XOR : ^

NOT : ~

Shift : << , >> 

 

예시)

9 = 0b1001, 5 = 0b101

AND OR XOR
9 & 5 = 0b1 = 1 9 | 5 = 1101 = 13 9 ^ 5 = 0b1100 = 12
NOT << ( == *2) >> (== // 2)
~9 = -0b1010 = -10 9 << 1 = 0b10010 = 18 >> 1 = 0b100 = 4

 

n = 9
m = 5


#AND 9 & 5
print('9 &= 5 =')
print(bin(n), '&', bin(m), '=', bin(n & m), '==', n & m)
# 9 &= 5 =
# 0b1001 & 0b101 = 0b1 == 1

#OR 9 | 5
print('9 |= 5 =')
print(bin(n), '|', bin(m), '=', bin(n | m), '==', n | m)
# 9 |= 5 =
# 0b1001 | 0b101 = 0b1101 == 13


#XOR
print('9 ^= 5 =')
print(bin(n), '^', bin(m), '=', bin(n ^ m), '==', n ^ m)
# 9 ^= 5 =
# 0b1001 ^ 0b101 = 0b1100 == 12


#Shift >>
print(n >> 1, ',', n >> 2)
#=> 4, 2


#Shift << 
print(n << 1, ',', n << 2)
# => 18, 36


#NOT
print(bin(~n), '=', ~n) 
# -0b1010 = -10

 

 

 

 

 

참고 : Python 계단밟기

https://wikidocs.net/20704

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

 

728x90
반응형