10진수의 정수 부분을 r진수로 변환하는 과정은 다음과 같습니다. 먼저 10진수의 정수 부분을 “입력값”에 입력합니다. 이 때, “I”라는 변수를 0으로 선언하여 r진수로 변환할 때 반복되는 과정에서 필요로 하는 변수를 선언합니다. 입력값을 r로 나눈 값의 정수를 “몫”으로 선언합니다. 입력값을 r로 mod(%)한 값을 “나머지”로 선언합니다. 값으로 얻은 나머지를 결과값(i)에 입력합니다. 몫이 0이 아닌 동안 다음 과정을 반복합니다. 얻은 몫을 입력값에 입력하고 변수 I에 1을 더해줍니다. 그리고 입력값을 r로 나눈 값의 정수를 몫으로 다시 대입해줍니다. 입력값을 r로 mod(%)한 값을 나머지로 다시 대입해줍니다. 얻은 나머지를 결과값(i)에 입력해줍니다. 몫이 0이 되면 위 반복을 종료합니다. 결과값 배열의 I부터 0까지 역순으로 출력하면 r진수의 정수 부분이 됩니다.
10진수 67을 위 알고리즘을 이용하여 16진수, 8진수, 2진수로 변경하는 과정은 다음과 같습니다.
1) 16진수로 변환할 때는 입력값에 67을 입력합니다. 변수 I를 0으로 초기화합니다. 67을 16으로 나눈 값의 정수 부분 4를 몫으로 선언합니다. 67을 16으로 mod(%)한 값 3을 나머지로 선언합니다. 값으로 얻은 나머지 3을 결과값(0)에 입력합니다. 몫이 0이 아닌 동안 다음 과정을 반복합니다. 위에서 얻은 몫 4를 입력값에 입력하고 변수 I에 1을 더해 I=1로 만들어줍니다. 그리고 입력값 4를 16으로 나눈 값의 정수를 몫으로 다시 입력해주는데 이 때 몫이 0이 되었습니다. 입력값 4를 mod(%)한 값 4를 나머지에 다시 대입해줍니다. 얻은 나머지 4를 결과값(1)에 입력해줍니다. 몫이 0이 되었기 때문에 더 이상 위 과정을 반복하지 않고 종료합니다. 결과값 I인 1부터 0까지 역순으로 출력하면 43으로 67의 16진수는 43입니다.
2) 8진수로 변환할 때는 입력값에 67을 입력합니다. 변수 I를 0으로 초기화합니다. 67을 8로 나눈 값의 정수 부분 8을 몫으로 선언합니다. 67을 8로 mod(%)한 값 3을 나머지로 선언합니다. 값으로 얻은 나머지 3을 결과값(0)에 입력합니다. 몫이 0이 아닌동안 다음 과정을 반복합니다. 위에서 얻은 몫 8을 입력값에 입력하고 변수 I에 1을 더해 I=1로 만들어줍니다. 그리고 입력값 8을 8(r)로 나눈 값의 정수 1을 다시 몫으로 대입해줍니다. 입력값 8을 8(r)로 mod(%)한 값 0을 나머지로 대입해줍니다. 얻은 나머지 0을 결과값(1)에 입력해줍니다. 몫이 1이므로 다시 과정을 반복합니다. 몫1을 입력값에 입력하고 변수 I에 1을 더해 I=2로 만들어줍니다. 그리고 1(입력값)을 8(r)로 나눈 값의 정수 0을 몫에 입력해줍니다. 1을 8로 mod(%)한 값 1을 나머지로 대입해줍니다. 얻은 나머지 1을 결과값(2)에 입력해줍니다. 몫이 0이므로 반복을 종료합니다. 결과값에는 301순서로 입력이 되었으므로 배열의 I부터 0까지 역순으로 출력하면 십진수 67의 8진수는 103이 됩니다.
3) 2진수로 변환할 때는 입력값에 67을 입력합니다. 변수 I를 0으로 초기화합니다. 67을 2로 나눈 값의 정수 부분 33을 몫으로 선언합니다. 67을 2로 mod(%)한 값 1을 나머지로 선언합니다. 값으로 얻은 나머지 1을 결과값(0)에 입력합니다. 몫이 0이 아닌동안 다음 과정을 반복합니다. 위에서 얻은 몫 33을 입력값에 입력하고 변수 I에 1을 더해 I=1로 만들어줍니다. 그리고 입력값 33을 2로 나눈 값의 정수 16을 다시 몫으로 대입해줍니다. 입력값 33을 2로 mod(%)한 값 1을 나머지로 대입해줍니다. 얻은 나머지 1을 결과값(1)에 입력해줍니다. 몫이 0이 아니므로 위 과정을 반복합니다. 몫 16을 입력값에 입력하고 변수 I에 1을 더해 I=2로 만들어줍니다. 그리고 16을 2로 나눈 값의 정수 8을 몫으로 다시 대입해줍니다. 입력값 16을 2로 mod(%)한 값 0을 나머지로 대입해줍니다. 얻은 나머지 0을 결과값(2)에 입력해줍니다. 몫이 0이 아니므로 반복합니다. 얻은 몫 8을 입력값에 입력하고 변수 I에 1을 더해 I=3으로 만들어줍니다. 그리고 입력값 8을 2로 나눈 값의 정수 4를 몫으로 다시 대입해줍니다. 입력값 8을 2로 mod(%)한 값 0을 나머지로 다시 대입해줍니다. 얻은 나머지 0을 결과값(3)에 입력해줍니다. 몫이 0이 아니므로 반복합니다. 몫 4를 입력값에 입력하고 변수 I에 1을 더해 I=4로 만들어줍니다. 입력값 4를 2로 나눈 값의 정수 2를 몫으로 대입해줍니다. 입력값 4를 2로 mod(%)한 값 0을 나머지로 다시 대입해줍니다. 얻은 나머지 0을 결과값(4)에 입력해줍니다. 몫이 0이 아니므로 반복합니다. 몫 2를 입력값에 입력하고 변수 I에 1을 더해 I=5로 만들어줍니다. 입력값 2를 2로 나눈 값의 정수 1을 몫으로 대입해줍니다. 입력값 2를 2로 mod(%)한 값 0을 나머지로 다시 대입해줍니다. 얻은 나머지 0을 결과값(5)에 입력해줍니다. 몫이 0이 아니므로 반복합니다. 몫 1을 입력값에 입력하고 변수 I에 1을 더해 1=6으로 만들어줍니다. 입력값 1을 2로 나눈 값의 정수 0을 몫으로 대입해줍니다. 입력값 1을 2로 mod(%)한 값 1을 나머지로 다시 대입해줍니다. 얻은 나머지 1을 결과값(6)에 입력해줍니다. 몫이 0이므로 반복을 종료합니다. 결과값에는 순서대로 1,1,0,0,0,0,1이 입력되었으므로 배열의 I부터 0까지 역순으로 출력하면 십진수 67의 2진수는 1000011입니다.
***위 내용은 대학 과제제출을 위해 직접 작성한 내용입니다.
'공부 > 컴퓨터' 카테고리의 다른 글
스크래치란? 스크래치의 특징/장점/방법 (39) | 2024.09.05 |
---|---|
VR(가상현실)이란? 특징과 출력방법에 대해서 (10) | 2024.09.04 |
QR코드란? 바코드와 QR코드의 차이와 특징 (1) | 2024.09.03 |
백준 1546번 평균 문제 C++ (0) | 2024.02.20 |
백준 10872번 팩토리얼 C++ (0) | 2024.02.06 |