Python 강좌 : 제 6강 - 비트 연산
비트 연산(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를 포함하여 0과 1로 구성된 진법입니다. 맨 우측 첫 자릿수부터 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은 각 자릿수들을 비교하여 반환하며 결과에서 확인 가능합니다.
shift는 y회 만큼 방향으로 이동하며 결과에서 확인 가능합니다.
not의 경우 0 → 1로 1 → 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 :
논리 형식이나상수형,조건식등True나False로 반환되는 값은 사용이 가능합니다.
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(객체, 클래스)를 사용하여 객체가 클래스의 객체인지를 확인합니다.
공유하기
Kakao
Naver
Twitter
LinkedIn
Facebook
댓글 남기기