본문 바로가기

Language/Python

Python 비트연산자(Bitwise Operator) << , >> , |= , &= 등

by engineer M 2020. 2. 8.

알고리즘을 풀다가 모르는 연산자가 나와서 포스팅 한다.

<<, >>, |=, &= 는 비트 연산자이다. 

 

& (Binary AND) : bit 단위로 and연산을 한다.
| (Binary OR) : bit 단위로 or연산을 한다.
^ (Binary XOR) : bit 단위로 xor연산을 한다.
~ (Binary NOT) : bit 단위로 not연산을 한다.(1의 보수)
<< (Binary left Shift) : bit 단위로 왼쪽으로 비트단위 밀기 연산을 한다.
>> (Binary right Shift) : bit 단위로 오른쪽으로 비트단위 밀기 연산을 한다.

 

예를 들어 a = 0011, b = 1100일 때, 

a & b 는 둘다 1 일이여야만 1이기 때문에,

0011

1100

_____

0000

해서 0000이 된다.

 

 

# 비트 연산자(Bitwise Operators)
a = 0b10000001
b = 0b11110110

print('a = ', a, ":", bin(a))
print('b = ', b, ":", bin(b))
print('a & b = ', a & b, ":", bin(a & b))
print('a | b = ', a | b, ":", bin(a | b))
print('a ^ b = ', a ^ b, ":", bin(a ^ b))
print('~a = ', ~a, ":", bin(~a))

a = 0b1
print('a = ', a)
a = a << 1  # * 2
print('a = ', a)
a = a << 1  # * 2
print('a = ', a)
a = a << 3  # * 2**3
print('a = ', a)

a = a >> 1  # / 2
print('a = ', a)
a = a >> 1  # / 2
print('a = ', a)
a = a >> 2  # / 2**2
print('a = ', a)


# 답 
a =  129 : 0b10000001
b =  246 : 0b11110110
a & b =  128 : 0b10000000
a | b =  247 : 0b11110111
a ^ b =  119 : 0b1110111
~a =  -130 : -0b10000010
a =  1
a =  2
a =  4
a =  32
a =  16
a =  8
a =  2

 

댓글