8진법이나 16진법의 변환은 함수로 이미 있지만 2진법의 변환은 함수가 없다.
그래서 직접 작성해야 하는데, 10진법 수를 2진법으로 변환하는 가장 간단한 방법은 2로 나누는 것이다.
초등학교인지 중학교인지는 잘 모르지만 그 당시에 2진법으로 변환하는 방법을 배운다.
10진법 수를 2로 계속 나눠서 나온 나머지들을 역순으로 나열하면 된다.
예를 들면 아래와 같이 연산하며 10 은 1010 이 된다.
2 | 10 - 0
ㅡㅡ
| 5 - 1
ㅡㅡ
| 2 - 0
ㅡㅡ
1
이를 코딩해 보면
import sys def cal(a) : b = '' while a > 0 : b = str(a%2) + b a//=2 return b a = input('Intger : ') if a > 0 : print cal(a) elif a == 0 : print '0' else : print '1' + cal(a & sys.maxint)이 처럼 작성 해볼 수 있는데, 양수는 그대로 대입해보면 되지만 음수의 경우 2의 보수를 취하기 때문에 계산이 조금 다르다.
그래서 사용한 방법이 MSB 를 제외한 31자리 비트만을 추출(?) 한 다음 앞에다가 1만 연결시켰다.
추출한 방법은 앞의 문제와 같은 방법으로 1로만 31개로 이루어진 maxint 값과 & 연산을 했다.
파이썬을 어제부터 공부하게된 학생입니다. 너무 기본적인 질문일꺼같지만 궁금해서 여쭤봅니다.
답글삭제1. b=' '이부분은 무엇을 뜻하는지 궁금합니다
2. str을 이용해 문자형으로 바꾸는 이유가 궁금합니다.
1번은 뒷부분공부하니 나오는군요 공문자열이라고요 2번만 부탁드립니다.
답글삭제