로직 필요없이, 함수 하나로 변경할 수 있지만 .. (아래 참고)
자연수를 이진수로 변경하는 로직을 작성해 보았다.
이미지 출처는 여기!
그림과 같이 십진수를 2로 나누면서 나머지 값을 거꾸로 읽으면 됩니당 ^_^
그리고 몫이 0 이하가 되면 멈추면 되요!
int num = 8; // 자연수 int i = 0; // 나머지값 String result = ""; while(true) { i = num%2; result = i + result; num = num/2; if(num <= 0) break; } System.out.println("결과는 " + result);
이번엔 while문을 사용해 보았습니다. while 조건절에 true를 주면 항상 while문을 타게 되어있습니다. 반드시 break;을 넣어줘야해요!
1) 결과(result)에 나머지 값 넣기
자연수(num)을 2로 나누어 나머지 값을 변수 i에 담습니다. (i = 나머지)
그리고 result에 나머지를 넣어줄건데요, 이때 변수 i의 값을 result의 뒷부분이 아닌 앞부분에 넣어주는게 키포인트입니다.
이진수는 나머지를 뒤에서부터 읽어오기 때문에 맨처음에 나온 나머지 값이 맨 뒷자리에 있게 되기 때문입니다.
그리고 2로 나눈 몫을 자연수(num)에 넣어 다시 2로 나누도록 반복..
2) break;은 언제?
중요한 break;은 자연수(num)이 0보다 같거나 작아지면 while문을 빠져나오면 됩니당 :-D
int num = 8; // 자연수 String result = Integer.toBinaryString(num); System.out.println("결과는 " + result);
toBinaryString()함수를 사용하면 아주 간단하게 변환이 가능해요 ^^ㅎ