본문 바로가기
algorithm/개념 공부

[JAVA] 간단하게 진법변환하기, 숫자 reverse

by buddev 2020. 5. 4.

간단한 진법 변환 코드입니다.

연습 겸 한번 짜본 내용입니다.

예시로 든 진법이 아니더라도 원하는 숫자로 바꾸시면 변환 가능합니다!

 

10진법 숫자를 2진법으로 변환

10진법 숫자 14를 2진법으로 바꾸면 1110이 됩니다.

나머지
14 / 2 7   0  
7 / 2 3   1  
3 / 2 1   1  
1 / 2 0   1  

주어진 값을 2로 나눈 나머지를 문자열에 더해갑니다. 이때 뒤에서부터 더해가야 하기에

새로 더해주는 값은 문자열의 앞에 더해줘야 합니다.

int num = 14;
String ans = "";		//값을 더해주기 위한 빈 문자열 선언
while (num > 0) {
	ans = (num % 2) + ans;	//문자열의 앞에 num을 2로 나눴을 때의 나머지를 더해준다.
	num /= 2;		//다음 턴을 위해 num을 2로 나눠준다.
}

System.out.println(ans);	//결과 출력

 숫자로 출력하고 싶다면 Integer.parseInt(ans)를 해주면 됩니다!

 

+ 변형) 10진법 숫자를 7진법 문자열로 변환

int num = 48;
String ans = "";
while (num > 0) {
	ans = (num % 7) + ans;
	num /= 7;
}

 

7진법 숫자(또는 문자열)를 10진법 숫자로 변환 - Integer.parseInt 사용

보통 Integer.parseInt()는 문자열을 int형으로 바꾸는 데에 많이 사용하지만,

 

매개변수를 하나 더 줘서

Integer.parseInt(문자열, 진법) 형태로 사용하면

주어진 진법의 숫자를 10진수 int형으로 변환해 줍니다.

그래서 "100"이라는 7진수 문자열을 주면, 49라는 10진수 숫자로 바꿔 줍니다.

int num = 100;				
String str = num + "";			//만약 int형의 진법을 바꾸고싶다면 먼저 문자열 형태로 변환
int ans = Integer.parseInt(str, 7);

 

Integer.parseInt의 두가지 용법

 


숫자를 거꾸로 출력하기

마지막 숫자부터 얻기 위해서 주어진 num을 10으로 나눈 나머지를 결과값인 ans에 더해줍니다.

즉, num % 10을 한번씩 해서 계속해서 마지막 값을 구합니다.

 

이때, 기존에 구해놓은 결과값에 10을 곱해서 자리값을 구분해 줍니다.

즉, 처음에 구한 끝값이 9였다면 그 다음 스텝은 98이 되어야 하기 때문에,

9에 자리를 구분하기 위해 10을 곱해주고, 새롭게 구한 나머지값인 8을 더해줍니다.

 

주어진 num이 0보다 클동안 계속 반복해줍니다.

int num = 123456789;
int ans = 0;
while (num > 0) {
	ans = (ans * 10) + (num % 10);
	num /= 10;
}

'algorithm > 개념 공부' 카테고리의 다른 글

다익스트라 vs 크루스칼 비교 (java)  (1) 2020.02.01

댓글