본문 바로가기
알고리즘

java/python 진수변환

by ujin2021 2020. 7. 31.

scpc 연습문제 113번. 입력받은 정수를 이진수로 변환하여 1의 갯수를 출력하는 문제

 

알고리즘문제에서 종종 진수변환을 요구하는 문제가 있다. 오늘 딱정리!

 

<java>

int num = 12;

String toBinary = Integer.toBinaryString(num); //2진수
String toOctal = Integer.toOctalString(num);   //8진수
String toHex = Integer.toHexString(num);       //16진수

to[진수]String(int)!! 2진수는 Binary, 8진수는 Octal, 16진수는 Hex 이다.

변환한 결과의 타입은 String이다.

 

 n진수를 다시 10진수로 변환하는 방법은

int binToDec = Integer.parseInt(toBinary, 2); //binary -> decimal
int octalToDec = Integer.parseInt(toOctal, 8); // octal -> decimal
int hexToDec = Integer.parseInt(toHex, 16); // hex -> decimal

Integer.parseInt(진수, n) 를 사용하여 다시 10진수(int)로 변환 가능하다.

 

<python>

num = 12

toBin = bin(num)
toOct = oct(num)
toHex = hex(num)

java에 비해 비교적 간단하게 bin, oct, hex로 둘러싸주면 된다. java와 마찬가지로 반환값 타입은 string이다.

 

toBin_pre = format(num, '#b') # 0b1100
toBin = format(num, 'b') # 1100
toOct_pre = format(num, '#o') # 0o14
toOct = format(num, 'o') # 14
toHex_pre = format(num, '#h') # 0xC
toHex = format(num, 'h') # C

이렇게 format을 이용하여 바꿀수도 있다. #과 #없음의 차이는 접두어의 유무 차이이다.

 

다시 10진수로 반환하는방법은

binToDec = int('0b1100', 2)
octToDec = int('0o14', 8)
hexToDec = int('0xC', 16)

int(접두어+진수, n) 을 사용하면 됩니다.

 

2진수는 0b, 8진수는 0o, 16진수는 0x!!

'알고리즘' 카테고리의 다른 글

[python]programmers-같은숫자는 싫어  (0) 2020.08.27
[python]programmers-2016년  (0) 2020.08.27
[python]직사각형 한점 찾기  (0) 2020.08.25
[python]programmers -K번째수  (0) 2020.08.25
python 입력받기  (0) 2020.07.29