[Python/기초] 비트단위 논리연산 정리

Sumin Kim·2022년 7월 6일
0

Python Grammer

목록 보기
2/3
post-thumbnail

비트 단위 논리연산 정리

비트단위 연산이란 무엇을 의미하나?

00001111 과 같이 표현되어 있는 비트단위로 표현된 것을 단어 그대로 연산(덧셈 등 사칙 연산 부터 And, OR,...등 논리 연산)한다는 것이다.

대표적인 논리 연산 정리

"~" : NOT(코드업에 따르면, 틸드:tilde라고 부른다고 한다. )

반대로 뒤집는 다고 생각하면 쉽다. 예를 들어서 1010있으면
~1010은 0101이 된다. 하지만 Python에서 이렇게 print를 하면 원하는 값을 표현할 수 없다.

Print문을 통해 출력해서 표현 될때 10진수로 표현이 되는 데,
해당 프로그램 안에서 32비트 2진수로 표현을 한다.

a= 2
print(~a) 
# ~3
# a = 00000000 00000000 00000000 00000010
# ~a =  11111111 11111111 11111111 11111101

"&" : AND

이때는 두개의 변수가 필요하다. 변수 두개를 가지고 논리연산을 진행한다. 두 변수의 값에 모두 포함 된 숫자만 나온다.

a= 69
b= 37

print(f'a = {bin(a)}, b = {bin(b)}')
print(f'{bin(a&b)}')
#a = 0b1000101, b = 0b100101
#0b101

"|" : OR

이때에도 두개의 변수가 필요하다. 변수 두개를 가지고 논리연산을 진행한다. 두 변수의 값에 한번이라도 들어가 있는 값이 있다면 나온다.

a= 69
b= 37

print(f'a = {bin(a)}, b = {bin(b)}')
print(f'{bin(a|b)}')
#a = 0b1000101, b = 0b100101
#0b1100101

"^" : XOR

역시 이때도 비교논리 연산자 답게 두개의 변수를 가지고 진행해야한다.

a= 69
b= 37

print(f'a = {bin(a)}, b = {bin(b)}')
print(f'{bin(a^b)}')
#a = 0b1000101, b = 0b100101
#0b1100000

"<<" : 비트단위로 왼쪽으로 1비트 이동

a= 69

print(f'a = {bin(a)}')
print(f'{bin(a<<1)}')
#a = 0b1000101
#a<<1 => 0b10001010

">>" : 비트단위로 오른쪽으로 1비트 이동

a= 69

print(f'a = {bin(a)}')
print(f'a>>1 => {bin(a>>1)}')
#a = 0b1000101
#a>>1 => 0b100010

참조(REF.)
1. 코드업:https://codeup.kr/problemsetsol.php?psid=33

profile
👩‍💻초보 researcher

0개의 댓글