본문 바로가기
공부/컴퓨터

십진수의 r진수(2진수, 8진수, 16진수)로 변경하는 알고리즘

by Ur's coding world 2024. 8. 30.
반응형

 

10진수의 정수 부분을 r진수로 변환하는 과정은 다음과 같습니다. 먼저 10진수의 정수 부분을 입력값에 입력합니다. 이 때, “I”라는 변수를 0으로 선언하여 r진수로 변환할 때 반복되는 과정에서 필요로 하는 변수를 선언합니다. 입력값을 r로 나눈 값의 정수를 으로 선언합니다. 입력값을 rmod(%)한 값을 나머지로 선언합니다. 값으로 얻은 나머지를 결과값(i)에 입력합니다. 몫이 0이 아닌 동안 다음 과정을 반복합니다. 얻은 몫을 입력값에 입력하고 변수 I1을 더해줍니다. 그리고 입력값을 r로 나눈 값의 정수를 몫으로 다시 대입해줍니다. 입력값을 rmod(%)한 값을 나머지로 다시 대입해줍니다. 얻은 나머지를 결과값(i)에 입력해줍니다. 몫이 0이 되면 위 반복을 종료합니다. 결과값 배열의 I부터 0까지 역순으로 출력하면 r진수의 정수 부분이 됩니다.

 

10진수 67을 위 알고리즘을 이용하여 16진수, 8진수, 2진수로 변경하는 과정은 다음과 같습니다.

 

1) 16진수로 변환할 때는 입력값에 67을 입력합니다. 변수 I0으로 초기화합니다. 6716으로 나눈 값의 정수 부분 4를 몫으로 선언합니다. 6716으로 mod(%)한 값 3을 나머지로 선언합니다. 값으로 얻은 나머지 3을 결과값(0)에 입력합니다. 몫이 0이 아닌 동안 다음 과정을 반복합니다. 위에서 얻은 몫 4를 입력값에 입력하고 변수 I1을 더해 I=1로 만들어줍니다. 그리고 입력값 416으로 나눈 값의 정수를 몫으로 다시 입력해주는데 이 때 몫이 0이 되었습니다. 입력값 4mod(%)한 값 4를 나머지에 다시 대입해줍니다. 얻은 나머지 4를 결과값(1)에 입력해줍니다. 몫이 0이 되었기 때문에 더 이상 위 과정을 반복하지 않고 종료합니다. 결과값 I1부터 0까지 역순으로 출력하면 43으로 6716진수는 43입니다.

 

2) 8진수로 변환할 때는 입력값에 67을 입력합니다. 변수 I0으로 초기화합니다. 678로 나눈 값의 정수 부분 8을 몫으로 선언합니다. 678mod(%)한 값 3을 나머지로 선언합니다. 값으로 얻은 나머지 3을 결과값(0)에 입력합니다. 몫이 0이 아닌동안 다음 과정을 반복합니다. 위에서 얻은 몫 8을 입력값에 입력하고 변수 I1을 더해 I=1로 만들어줍니다. 그리고 입력값 88(r)로 나눈 값의 정수 1을 다시 몫으로 대입해줍니다. 입력값 88(r)mod(%)한 값 0을 나머지로 대입해줍니다. 얻은 나머지 0을 결과값(1)에 입력해줍니다. 몫이 1이므로 다시 과정을 반복합니다. 1을 입력값에 입력하고 변수 I1을 더해 I=2로 만들어줍니다. 그리고 1(입력값)8(r)로 나눈 값의 정수 0을 몫에 입력해줍니다. 18mod(%)한 값 1을 나머지로 대입해줍니다. 얻은 나머지 1을 결과값(2)에 입력해줍니다. 몫이 0이므로 반복을 종료합니다. 결과값에는 301순서로 입력이 되었으므로 배열의 I부터 0까지 역순으로 출력하면 십진수 678진수는 103이 됩니다.

 

3) 2진수로 변환할 때는 입력값에 67을 입력합니다. 변수 I0으로 초기화합니다. 672로 나눈 값의 정수 부분 33을 몫으로 선언합니다. 672mod(%)한 값 1을 나머지로 선언합니다. 값으로 얻은 나머지 1을 결과값(0)에 입력합니다. 몫이 0이 아닌동안 다음 과정을 반복합니다. 위에서 얻은 몫 33을 입력값에 입력하고 변수 I1을 더해 I=1로 만들어줍니다. 그리고 입력값 332로 나눈 값의 정수 16을 다시 몫으로 대입해줍니다. 입력값 332mod(%)한 값 1을 나머지로 대입해줍니다. 얻은 나머지 1을 결과값(1)에 입력해줍니다. 몫이 0이 아니므로 위 과정을 반복합니다. 16을 입력값에 입력하고 변수 I1을 더해 I=2로 만들어줍니다. 그리고 162로 나눈 값의 정수 8을 몫으로 다시 대입해줍니다. 입력값 162mod(%)한 값 0을 나머지로 대입해줍니다. 얻은 나머지 0을 결과값(2)에 입력해줍니다. 몫이 0이 아니므로 반복합니다. 얻은 몫 8을 입력값에 입력하고 변수 I1을 더해 I=3으로 만들어줍니다. 그리고 입력값 82로 나눈 값의 정수 4를 몫으로 다시 대입해줍니다. 입력값 82mod(%)한 값 0을 나머지로 다시 대입해줍니다. 얻은 나머지 0을 결과값(3)에 입력해줍니다. 몫이 0이 아니므로 반복합니다. 4를 입력값에 입력하고 변수 I1을 더해 I=4로 만들어줍니다. 입력값 42로 나눈 값의 정수 2를 몫으로 대입해줍니다. 입력값 42mod(%)한 값 0을 나머지로 다시 대입해줍니다. 얻은 나머지 0을 결과값(4)에 입력해줍니다. 몫이 0이 아니므로 반복합니다. 2를 입력값에 입력하고 변수 I1을 더해 I=5로 만들어줍니다. 입력값 22로 나눈 값의 정수 1을 몫으로 대입해줍니다. 입력값 22mod(%)한 값 0을 나머지로 다시 대입해줍니다. 얻은 나머지 0을 결과값(5)에 입력해줍니다. 몫이 0이 아니므로 반복합니다. 1을 입력값에 입력하고 변수 I1을 더해 1=6으로 만들어줍니다. 입력값 12로 나눈 값의 정수 0을 몫으로 대입해줍니다. 입력값 12mod(%)한 값 1을 나머지로 다시 대입해줍니다. 얻은 나머지 1을 결과값(6)에 입력해줍니다. 몫이 0이므로 반복을 종료합니다. 결과값에는 순서대로 1,1,0,0,0,0,1이 입력되었으므로 배열의 I부터 0까지 역순으로 출력하면 십진수 672진수는 1000011입니다.

 

 

 

***위 내용은 대학 과제제출을 위해 직접 작성한 내용입니다.

 

반응형