안녕하세요 코북입니다. 오늘은 10진수를 2진수로 변환하는 코드를 작성해봤습니다. 이 문제를 풀려면 십진법 수를 이진법 수로 나타내는 방법에 대해 알아야 하는데요. 십진법 수를 몫이 0이 될 때까지 2로 나누어서 생긴 나머지를 역순으로 적으면 됩니다.
public class Java17 {
public static void main(String[] agrs) {
Scanner sc = new Scanner(System.in);
System.out.print("숫자입력 >> ");
int a = sc.nextInt();
ArrayList<Integer> list = new ArrayList<Integer>();
// 10진법으로 나타낸 수를 2진법으로 타나내려면
// 몫이 0이 될 때까지 계속 2로 나누어서 생긴 나머지를 역순으로 적으면 된다
while(true)
{
if(a%2==1) // 나머지가 1인 경우
{
list.add(1);
}
else if (a%2==0) // 나머지가 0인 경우
{
list.add(0);
}
a /= 2;
if(a==0) {
break;
}
}
// 역순으로 출력
for(int i=0; i<list.size(); i++)
{
System.out.print(list.get(list.size()-i-1));
}
}
}
이해를 돕기 위한 그림과 코드입니다. 몇 번 나누어야 하는지 정확하지 않기 때문에 for문이 아닌 while문을 사용하였습니다. 역순으로 출력하기 위해 값을 저장할 필요가 있다고 생각이 들어 ArrayList를 사용하여 값을 저장한 후 역순으로 출력하였습니다.
'알고리즘' 카테고리의 다른 글
[Java] 버블정렬(Bubble sort) (0) | 2022.02.10 |
---|---|
[Java] 가까운 거리 찾기 (1차원) (0) | 2022.02.08 |
[Java]수열 n번째 항까지 출력 (0) | 2022.02.01 |
[Java]소인수분해 (0) | 2022.01.25 |
[Java]팩토리얼 - 재귀 함수 (0) | 2022.01.24 |