Bitwise operator 알아보기

오늘은 Bitwise operator, 비트 연산자에 대하여 간단히 되짚어보려 합니다.

and

두개의 인자가 1일때만 1을 리턴합니다.

문자는 &를 씁니다.

  1. 0 & 0 = 0

  2. 0 & 1 = 0

  3. 1 & 1 = 1

or

한개라도 1이 있을시 1을 리턴합니다.

문자는 를 씁니다.
  1. 0 0 = 0
  2. 0 1 = 1
  3. 1 1 = 1

xor

두개의 값이 다를 때만 1을 리턴합니다.

문자는 ^ 를 씁니다.

  1. 0 ^ 0 = 0

  2. 0 ^ 1 = 1

  3. 1 ^ 1 = 0

not

0의 부정은 1이고, 1의 부정은 0입니다.

문자는 ~ 를 씁니다.

~ 0 = 1

~ 1 = 0

shift

  • left shift : 0001 « 2 = 0100

  • right shift : 0100 » 2 = 0001

코드

파이썬 코드로 위 비트 연산자를 실습해보았습니다.

Python 3.7.0a4 (v3.7.0a4:07c9d85, Jan  9 2018, 07:07:02) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> a= 12
>>> b= 6
>>> bin(a)
'0b1100'
>>> bin(b)
'0b110'
>>> c = a & b
>>> bin(c)
'0b100'
>>> d = a | b
>>> bin(d)
'0b1110'
>>> e = a ^ b
>>> bin(e)
'0b1010'
>>> f = ~a
>>> bin(f)
'-0b1101'
>>> f2 = ~b
>>> bin(f2)
'-0b111'
>>> g = a<<2
>>> bin(g)
'0b110000'
>>> g2 = a>>2
>>> bin(g2)
'0b11'

위 코드에서 특이한 점은 파이썬이 순수한 비트연산 대신, 정수로 계산을 하게 되면서 보수연산을 하게된다는 점입니다.

그래서 not을 한 2진수를 다시 정수로 돌리게 되면

>>> int(f)
-13

1을 더한 음수 형태를 띄게 됩니다.

Written on February 23, 2018