2012-10-03 8 views
15

기본 변환을 수행하는 C++ 프로그램을 작성하려고합니다. 기본 10을 기본 n 변환으로 변환

내가 20

2에서 다른 모든 정수 기지 진수로 변환 할

이 있습니까 효율적이고 구현하기 쉬운 기본 변환을위한 알고리즘을?

+0

하나의 숫자에서 다른 숫자로 숫자를 변환하는 방법은 하나뿐입니다. 문제가 정확히 무엇입니까? –

+0

"2에서 20까지의 다른 모든 기지"라고 말하면 2에서 20까지의 모든 실수가 있다고 가정합니다. 비현실적인 기초가없고, 비 정수의 기초가 없습니까? 그것들은 더 어렵습니다. –

+0

또한 문제는 무엇입니까? 지금까지 가지고있는 코드를 보여주십시오. –

답변

23

정확하게 어디에 문제가 있는지 이해할 수 없습니까? 기본 전환을하는 것은 매우 쉽고 어렵습니다. 당신이 직접하는 것처럼 기본 전환을 수행하십시오.

  • 분할 나머지
  • 반복 부문의 정수 부분은 반대로 제로
  • 나머지 값에 도달
  • 정지와 과정 아래 기본으로
  • 쓰기 주문은 자릿수로 을받습니다.
,363,210

예 :

1025 (십진수)베이스 15 :

1025/15 = 68 , remainder 5 
68 /15 = 4 , remainder 8 
4 /15 = 0 , remainder 4 

베이스 (15)의 개수는 485

2
두 가지 문제가있다

:

  • 로부터 파싱 원래 기본 컴퓨터의 기본 정수 표현 (strtol 꽤 좋습니다).

  • 새로운 자료에 서식을 지정하십시오. (itoa 꽤 좋습니다).

직접 쓰고 싶다면 div function을 좋아할 것입니다. 번호와 밑줄을 입력하면 가장 오른쪽 숫자가 분리됩니다. 모든 숫자를 얻기 위해 반복하십시오.

효율성을 높이려면 기본 제곱으로 나누고 한 번에 두 자리 숫자를 가져옵니다 (조회 표를 사용하여 두 자리 숫자의 ASCII 문자를 가져올 수 있음). Here's an example of some very efficient implementations. 다른베이스를 사용하도록 변경하면 어렵지 않습니다.

관련 문제