# 3. APS/CodeUp

CodeUp # Python 기초 100제_6059_비트단위로 NOT 하여 출력하기_(비트단위 논리연산, 틸드 Tilde)

둥굴둥굴둥굴레차 2021. 7. 4. 16:57

 

 

[기초-비트단위논리연산] 비트단위로 NOT 하여 출력하기(설명)(py)

python언어기초100제v1.0 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요. - 모든 내용

codeup.kr

 

[문제]

입력 된 정수를 비트단위로 참/거짓을 바꾼 후 정수로 출력해보자.

(비트 단위로 1 -> 0, 0 -> 1로 바꾼 후 그 값을 10진수로 출력한다.)

 

 

[input 예시]

2

 

 

[output 예시]

-3

 

 

[나의 풀이]

## 풀이 1
a = int(input())
print('%d' % ~a)

## 풀이 2
a = int(input())
print(~a)

 

🔽 % 관련 문제, 참고하세요

 

[2021.07.04] CodeUp # Python 기초 100제_6043_실수 2개 입력받아 나눈 결과 계산하기

[기초-산술연산] 실수 2개 입력받아 나눈 결과 계산하기(py) 본 문제는 python 의 빠른 기초 학습을 위해 설계된 문제로서 python 코드 제출을 기준으로 설명되어 있습니다. ------ 실수 2개(f1, f2)를

pythontoomuchinformation.tistory.com

 


 

비트단위 연산자?

 

 

비트단위(bitwise) 연산자의 종류

  • ~ (bitwise not) '틸드'라고 읽는다
  • & (bitwise and)
  • | (bitwise or)
  • ^ (bitwise xor)
  • << (bitwise left shift)
  • >> (bitwise right shift)

따라서, 문제에서 요구하는 대로 비트단위로 참/거짓을 바꾸려면
비트단위(bitwise)연산자 '~' 를 붙이면 된다.

 

 

참/거짓을 바꾼다는 말이란 무엇일까?

 

아래 예시를 보며 알아보자~!

1을 32비트로 저장하면 아래와 같이 2진수로 표현되어 저장된다.

00000000 00000000 00000000 00000001


~1은

11111111 11111111 11111111 11111110 (이는 -2를 의미)

 

0은 1로 1은 0으로 완전히 바뀐 것을 볼 수 있다!

 

 

 

 

이러한 내용을 간단히 표현하면, 정수 n이라고 할 때,

~n = -n - 1
-n = ~n + 1 과 같은 관계로 표현할 수 있다.

 




[참고] 컴퓨터에 저장되는 모든 데이터들은 2진수 형태로 바뀌어 저장된다.

0과 1로만 구성되는 비트단위들로 변환되어 저장되는데,
양의 정수는 2진수 형태로 바뀌어 저장되고, 음의 정수는 "2의 보수 표현"방법으로 저장된다.