Python 강좌 : 제 6강 - 비트 연산

Python Bitwise - or, and, xor, left shift, right shift, not

Python 강좌 : 제 6강 - 비트 연산
[ Python ] - 윤대희

비트 연산(Bitwise)


연산 의미
x | y or
x & y and
x ^ y xor
x « y left shift
x » y right shift
~x not

비트 연산을 통하여 2진법으로 구성된 값을 계산할 수 있습니다.

각 자릿수를 서로 비교하여 결과를 반환합니다.


  • or : 둘 중 하나의 값이 1일 경우 1을 반환
  • and : 둘 다 값이 1일 경우 1을 반환
  • xor : 둘 다 값이 다를 경우 1을 반환
  • left shift : 좌측으로 y회 비트 밀기
  • right shift : 우측으로 y회 비트 밀기
  • not : 반전


x = 0b0110
y = 0b1010

print(bin(x | y), x | y)
print(bin(x & y), x & y)
print(bin(x ^ y), x ^ y)
print(bin(x << 1), x << 1)
print(bin(y >> 1), y >> 1)
print(bin(~x), ~x)
결과
0b1110 14
0b10 2
0b1100 12
0b1100 12
0b101 5
-0b111 -7


2진법0b를 포함하여 01로 구성된 진법입니다. 맨 우측 첫 자릿수부터 2^n-1을 의미합니다. (n=1)

0b0110의 경우 0 / 1 / 1 / 0 이므로 2^2 + 2^1입니다. 즉, 0b0110=6을 의미합니다.

0b1010의 경우 1 / 0 / 1 / 0 이므로 2^3 + 2^1입니다. 즉, 0b1010=10을 의미합니다.

or, and, xor은 각 자릿수들을 비교하여 반환하며 결과에서 확인 가능합니다.

shifty회 만큼 방향으로 이동하며 결과에서 확인 가능합니다.

not의 경우 0 → 11 → 0으로 반전시킵니다. 하지만 여기서 -6이 아닌 -7이 나오는데, 2의 보수 표현법을 사용하기 때문입니다.

  • Tip : 2의 보수란 반전 시킨 값에 +1을 더해주어 음수를 표현하기 위해 사용합니다. 맨 앞에 -을 표현하여 반전을 대체합니다.



함수 사용


L1 = [True, True, False]

print(L1)
print(all(L1))
print(any(L1))

L2 = [1, 1, 0]

print(L2)
print(all(L2))
print(any(L2))

L3 = [3 > 0, 3 > 2, 2 == 2]

print(L3)
print(all(L3))
print(any(L3))
결과
[True, True, False]
False
True
[1, 1, 0]
False
True
[True, True, True]
True
True


all(목록)을 사용하여 목록 내의 모든 원소일 경우 True를 반환합니다.

any(목록)을 사용하여 목록 내의 원소 중 하나라도 일 경우 True를 반환합니다.


  • Tip : 논리 형식이나 상수형, 조건식TrueFalse로 반환되는 값은 사용이 가능합니다.


numb = 33.2
L = [1, 2, 3, 4]

print(isinstance(numb, int))
print(isinstance(numb, float))
print(isinstance(L, list))
print(isinstance(L[0], list))
결과
False
True
True
False


isinstance(객체, 클래스)를 사용하여 객체클래스의 객체인지를 확인합니다.



Book Image

개정판이 출간됐습니다!

C#과 파이썬을 활용한 OpenCV 4 프로그래밍 (개정판)

컴퓨터 비전 기초 이론부터 머신러닝을 활용한 영상 처리 프로젝트까지

  • C#과 파이썬용 OpenCV의 데이터 형식과 행렬 및 배열 연산
  • 이미지/동영상/카메라를 활용한 입출력과 결과 저장
  • 전처리 과정과 정보를 탐색하기 위한 이미지 변형
  • 유의미한 정보를 검출하기 위한 이미지 변환
  • 이미지에서 정보를 검출 및 인식
  • 객체 검출을 포함한 모션 추적
  • K-means, KNN, SVM 등의 머신러닝 알고리즘 적용 방법
  • 카페(Caffe), 다크넷(Darknet), 텐서플로 모델을 활용한 딥러닝 모듈 적용 방법
  • Tesseract-OCR과 C# OpenCvSharp4를 활용한 프로젝트
  • 텐서플로와 Python OpenCV4를 활용한 프로젝트
  • 윤대희 저 | 위키북스

    [yes24 바로가기] [알라딘 바로가기] [교보문고 바로가기]

    후원하기


    ⤧  Previous post Python 강좌 : 제 5강 - 기초 연산 (2) ⤧  Next post Python 강좌 : 제 7강 - 수학 모듈
    Python Category