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

   

비트 연산 (Bitwise)


연산의미
x | yor
x & yand
x ^ yxor
x « yleft shift
x » yright shift
~xnot

비트 연산을 통하여 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(객체, 클래스)를 사용하여 객체클래스의 객체인지를 확인합니다.




도움이 되셨다면 광고 클릭 부탁드립니다.

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