예전에 지금보다 더 코린이일 때, 카카오 코딩테스트 기출문제를 호기심에 풀어보다가 첫 문제부터 막힌 기억이 생생하다.
정답률이 무려 80%가 넘는 쉬운 문제였는데, 우리가 흔히 사용하는 10진수의 숫자를 2진수 형태로 바꿔주면 바로 풀 수 있는 간단한 문제였다.
물론 내가 부족하다는 게 가장 주된 이유이지만, 함수를 모른다는 이유로 문제를 풀지 못하면 꽤 억울하다.
그 때의 억울함을 추억하며 이 내용을 정리해보자.
파이썬의 공식 문서에 등록되어 있는 bin()의 사용법은 다음과 같다.
어려운 내용이 아니다. 정수형 숫자를 파라미터로 bin(x)에 넘겨주게 되면, 해당 숫자에 맞는 2진수 숫자를 리턴해준다.
print(bin(10))
10을 2진수로 바꿔주면
다음과 같은 결과가 출력된다.
재미있는 점은 이진수 표현 1010 앞에 '0b'라는 접두사가 붙는다는 것이다. (이 0b 덕분에 bin()으로 리턴된 값은 문자열이다)
이 0b는 숫자가 몇 진수에 기반을 둔 것인지 표현해주는 접두사이다.
이는 우리가 일반적으로 사용하는 10진수로 표현된 수들과 다른 진수로 표현된 숫자를 구분해주기 위함이다.
그냥 '1010' 이렇게 쳐두면 이게 2진수 표현인지 10진수 표현인지 알 도리가 없기 때문이다.
이진수뿐 아니라 8진수, 16진수에 대한 접두사도 있으며, 당연히 해당 진수 형태로 숫자를 변환시키는 함수도 존재한다.
숫자의 진수 변환 및 접두사
2진수 - bin(number) ->> 0b......
8진수 - oct(number) ->> 0o.....
16진수 - hex(number) ->> 0x.....
각각 2진수를 뜻하는 binary, 8진수를 뜻하는 Octal 16진수를 뜻하는 hexadecimal에서 따온 것이다.
참고로 10진수는 decimal이지만, dec(number)와 같은 함수는 따로 존재하지 않는다.
대신, 2, 8, 16진수로 변환된 값들(0b..., 0o..., 0x...)을 그대로 출력해보면 10진수로 변환된 값이 출력된다.
'언어 > Python' 카테고리의 다른 글
[Python] heapq(우선순위 큐) 사용법 (0) | 2021.09.19 |
---|---|
[Python] 집합 자료형 다루기 (0) | 2021.08.04 |
[Python] collections 모듈의 Counter 함수 (2) | 2021.04.04 |
[Python] 반복문의 제어 continue, pass, break (0) | 2021.01.08 |
[Python] 다양한 입력 방법 input() , sys.stdin.readline() (0) | 2021.01.08 |