Q59 ▶ 입력 된 정수를 비트단위로 참/거짓을 바꾼 후 정수로 출력해보자.
예를 들어 1이 입력되었을 때 저장되는
1을 32비트 2진수로 표현하면 00000000 00000000 00000000 00000001 이고,
~1은 11111111 11111111 11111111 11111110 가 되는데 이는 -2를 의미한다.
Tip
비트단위(bitwise)연산자 ' ~ ' 를 붙이면 된다.
(~ : tilde, 틸드라고 읽는다.)
bitNot = ~int(input())
print( bitNot )
◼ 비트단위(bitwise) 연산자
~(bitwise not),
&(bitwise and),
|(bitwise or),
^(bitwise xor),
<<(bitwise left shift),
>>(bitwise right shift)
Q60 ▶ 입력된 정수 두 개를 비트단위로 and 연산한 후 그 결과를 정수로 출력해보자.
예를 들어 3과 5가 입력되었을 때를 살펴보면
3 : 00000000 00000000 00000000 00000011
5 : 00000000 00000000 00000000 00000101
3 & 5 : 00000000 00000000 00000000 00000001
이 된다.
Tip
비트단위(bitwise)연산자 &를 사용하면 된다.(and, ampersand, 앰퍼센드라고 읽는다.)
비트단위 and 연산은 두 비트열이 주어졌을 때, 둘 다 1인 부분의 자리만 1로 만들어주는 것과 같다.
a, b = map(int, input().split())
print( a&b )
Q60+ ▶ 1개의 정수형 입력이 들어오면 비트 연산을 이용하여 '홀수'와 '짝수'를 판별하여라
Tip
'짝수'와 '홀수'를 리스트에 담고 짝수일 때는 '짝수'를, 홀수일 때는 '홀수'를 출력하게 한다.
0이 아닌 어떠한 정수일지라도 1과 비트단위 논리곱(&)을 수행하게 되면 1이 되는 특성을 이용한다.
number = int(input())
print( ['짝수', '홀수'][number & 1] )
Q61 ▶ 입력된 정수 두 개를 비트단위로 or 연산한 후 그 결과를 정수로 출력해보자.
예를 들어 3과 5가 입력되었을 때를 살펴보면
3 : 00000000 00000000 00000000 00000011
5 : 00000000 00000000 00000000 00000101
3 | 5 : 00000000 00000000 00000000 00000111
이 된다.
Tip
비트단위(bitwise) 연산자 |(or, vertical bar, 버티컬바)를 사용하면 된다.
| 은 파이프(pipe)연산자라고도 불리는 경우가 있다.
비트단위 or 연산은 둘 중 하나라도 1인 자리를 1로 만들어주는 것과 같다.
이러한 비트단위 연산은 빠른 계산이 필요한 그래픽처리에서도 효과적으로 사용된다.
a, b = map(int, input().split())
print( a|b )
Q62 ▶ 입력된 정수 두 개를 비트단위로 xor 연산한 후 그 결과를 정수로 출력해보자.
예를 들어 3과 5가 입력되었을 때를 살펴보면
3 : 00000000 00000000 00000000 00000011
5 : 00000000 00000000 00000000 00000101
3 ^ 5 : 00000000 00000000 00000000 00000110
이 된다.
Tip
비트단위(bitwise) 연산자 ^(xor, circumflex/caret, 서컴플렉스/카릿)를 사용하면 된다.
주의 ^은 수학식에서 거듭제곱(power)을 나타내는 기호와 모양은 같지만, 파이썬에서는 전혀 다른 배타적 논리합(xor, 서로 다를 때 1)의 의미를 가진다.
a, b = map(int, input().split())
print( a^b )
'python' 카테고리의 다른 글
11. 기초 - 조건문/선택 실행 구조 (코드업 기초 100제) (0) | 2022.02.09 |
---|---|
10. 기초 - 삼항연산 (코드업 기초 100제) (0) | 2022.01.30 |
8. 기초 - 논리연산 (코드업 기초 100제) (0) | 2022.01.30 |
7. 기초 - 비교연산 (코드업 기초 100제) (0) | 2022.01.30 |
6. 기초 - 비트 시프트 연산 (코드업 기초 100제) (0) | 2022.01.23 |