1-1. 비트연산자 ~(not) 개념
비트단위(bitwise) 연산자는 6가지가 있다.
1) ~(bitwise not)
2) &(bitwise and)
3) |(bitwise or)
4) ^(bitwise xor),
5) <<(bitwise left shift)
6) >>(bitwise right shift)
예를 들어 1이 입력되었을 때 저장되는 1을 32비트 2진수로 표현하면
00000000 00000000 00000000 00000001 이고,
~1은 11111111 11111111 11111111 11111110 가 되는데 이는 -2를 의미한다.
1-2. 비트연산자 ~(not) 예시
a=input()
a=int(a)
print(int(~a))
2-1. 비트연산자 &(and) 개념
https://codeup.kr/problem.php?id=6060
비트단위(bitwise) 연산자는 6가지가 있다.
1) ~(bitwise not)
2) &(bitwise and)
3) |(bitwise or)
4) ^(bitwise xor),
5) <<(bitwise left shift)
6) >>(bitwise right shift)
예를 들어 3과 5가 입력되었을 때를 살펴보면
3 : 00000000 00000000 00000000 00000011
5 : 00000000 00000000 00000000 00000101
3 & 5 : 00000000 00000000 00000000 00000001
이 된다.
비트단위 and 연산은 두 비트열이 주어졌을 때,
둘 다 1인 부분의 자리만 1로 만들어주는 것과 같다.
이 연산을 이용하면 어떤 비트열의 특정 부분만 모두 0으로도 만들 수 있는데
192.168.0.31 : 11000000.10101000.00000000.00011111
255.255.255.0 : 11111111.11111111.11111111.00000000
두 개의 ip 주소를 & 연산하면
192.168.0.0 : 110000000.10101000.0000000.00000000 을 계산할 수 있다.
실제로 이 계산은 네트워크에 연결되어 있는 두 개의 컴퓨터가 데이터를 주고받기 위해
같은 네트워크에 있는지 아닌지를 판단하는데 사용된다.
이러한 비트단위 연산은 빠른 계산이 필요한 그래픽처리에서
마스크연산(특정 부분을 가리고 출력하는)을 수행하는 데에도 효과적으로 사용된다.
2-1. 비트연산자 &(not) 예시
a,b=input().split()
print(int(a)&int(b))
3-1. 비트연산자 |(or) 개념
https://codeup.kr/problem.php?id=6061
비트단위(bitwise) 연산자는 6가지가 있다.
1) ~(bitwise not)
2) &(bitwise and)
3) |(bitwise or)
4) ^(bitwise xor),
5) <<(bitwise left shift)
6) >>(bitwise right shift)
** | 은 파이프(pipe)연산자라고도 불리는 경우가 있다.
예를 들어 3과 5가 입력되었을 때를 살펴보면
3 : 00000000 00000000 00000000 00000011
5 : 00000000 00000000 00000000 00000101
3 | 5 : 00000000 00000000 00000000 00000111
이 된다.
비트단위 or 연산은 둘 중 하나라도 1인 자리를 1로 만들어주는 것과 같다.
이러한 비트단위 연산은 빠른 계산이 필요한 그래픽처리에서도 효과적으로 사용된다.
3-1. 비트연산자 |(or) 예시
a,b=input().split()
print(int(a)|int(b))
4-1. 비트연산자 ^(xor) 개념
https://codeup.kr/problem.php?id=6062
비트단위(bitwise) 연산자는 6가지가 있다.
1) ~(bitwise not)
2) &(bitwise and)
3) |(bitwise or)
4) ^(bitwise xor),
5) <<(bitwise left shift)
6) >>(bitwise right shift)
^(xor, circumflex/caret, 서컴플렉스/카릿)를 사용하면 된다.
예를 들어 3과 5가 입력되었을 때를 살펴보면
3 : 00000000 00000000 00000000 00000011
5 : 00000000 00000000 00000000 00000101
3 ^ 5 : 00000000 00000000 00000000 00000110
이 된다.
이러한 비트단위 연산은 빠른 계산이 필요한 그래픽처리에서도 효과적으로 사용된다.
구체적으로 설명하자면,
두 장의 이미지가 겹쳐졌을 때 색이 서로 다른 부분만 처리할 수 있다.
배경이 되는 그림과 배경 위에서 움직이는 그림이 있을 때,
두 그림에서 차이만 골라내 배경 위에서 움직이는 그림의 색으로 바꿔주면
전체 그림을 구성하는 모든 점들의 색을 다시 계산해 입히지 않고
보다 효과적으로 그림을 처리할 수 있게 되는 것이다.
비행기 슈팅게임 등을 상상해보면 된다.
4-2. 비트연산자 ^(xor) 예시
a,b=input().split()
print(int(a)^int(b))
'프로그래밍 언어 > Python' 카테고리의 다른 글
파이썬 3항 연산자 / 코드업 6064번 (0) | 2022.10.06 |
---|---|
파이썬 논리연산 XOR(exclusive or, 배타적 논리합) 연산 등 (1) | 2022.10.05 |
파이썬 비트시프트연산 (0) | 2022.10.05 |
파이썬 실수형 소수점 자리 변환 (1) | 2022.10.05 |
파이썬 16진수 / 8진수 / 10진수 (1) | 2022.10.05 |