1 분 소요

10진수와 2진수 변환하기

# 13(10진수)을 2진수로 변환
print(bin(13)) # 0b1101

# 1101(2진수)를 10진수로 변환
print(0b1101) # 13

# 2진수로 된 문자열 1101을 10진수로 변환
print(int('1101', 2)) # 13

비트 논리 연산자 사용하기

2진수의 각 자릿수를 AND, OR, XOR, NOT 연산을 하는 비트 논리 연산자를 사용해보자.

  • & (AND): 두 비트가 모두 1 일때만 1
  • |(OR): 두 비트 중 하나 이상 1 이면 1
  • ^ (XOR): 두 비트가 같으면 0, 다르면 1
  • ~ (NOT): 0 이면 1, 1 이면 0
# 비트 AND
print(bin(0b1101 & 0b1001)) # 0b1001
print(13 & 9) # 9 # 10진수 13과 9를 2진수로 바꾸어 AND 계산 후 다시 10진수로 변환

# 비트 OR
print(bin(0b1101 | 0b1001)) # 0b1101
print(13 | 9) # 13

# 비트 XOR
print(bin(0b1101 ^ 0b1001)) # 0b100
print(13 ^ 9) # 4

# 비트 NOT
print(bin(~0b1101)) # -0b1110
print(~13) # 14

비트 연산자 진리표

스크린샷 2023-03-29 오후 5 33 30

시프트 연산자 사용하기

시프트 연산자를 사용해 비트의 위치를 이동시킬 수 있다.
시프트 연산자는 << 또는 >> 다음에 비트를 이동시킬 횟수를 지정한다.
<<는 비트를 왼쪽으로 이동시키고, >>는 비트를 오른쪽으로 이동시킨다.

# 비트를 왼쪽으로 2번 이동
print(bin(0b0011 << 2)) # 0b1100
print(0b0011 << 2) # 12

# 비트를 오른쪽으로 2번 이동
print(bin(0b1100 >> 2)) # 0b0011
print(0b1100 >> 2) # 3

비트를 오른쪽으로 이동시켰을 때 1이 들어갈 공간이 없다면 1은 사라진다.
즉, 계속 비트를 오른쪽으로 이동시키면 1은 모두 사라지고 최종 결과는 0b0이 된다.

ref.



💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기

태그:

카테고리:

업데이트: