Bitwise operator 알아보기
오늘은 Bitwise operator, 비트 연산자에 대하여 간단히 되짚어보려 합니다.
and
두개의 인자가 1일때만 1을 리턴합니다.
문자는 &를 씁니다.
-
0 & 0 = 0
-
0 & 1 = 0
-
1 & 1 = 1
or
한개라도 1이 있을시 1을 리턴합니다.
문자는 | 를 씁니다. |
-
0 0 = 0 -
0 1 = 1 -
1 1 = 1
xor
두개의 값이 다를 때만 1을 리턴합니다.
문자는 ^ 를 씁니다.
-
0 ^ 0 = 0
-
0 ^ 1 = 1
-
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