2010-08-23 2 views
5

소스 정수의 크기가 임의 인 경우 숫자 체계 간의 변환을위한 효율적인 알고리즘이 있습니까?숫자 체계 간의 효율적인 변환 알고리즘

예를 들어 정수 배열이 {1, 4, 8}인데 십진수 형식의 148 개가 입력으로 있다고 가정합니다. 이 값은 16 진수 형식의 {9, 4} 또는 8 진수의 {2, 2, 4} 또는 {1,0010100} 이진 형식의 {1, 0, 1, 0, 0} 148}을 1234 형식으로 작성합니다.

실제 값이 컴퓨터에서 지원하는 단어 크기로 표현 될 수 있으면 간단합니다. 그러나 임의의 크기로 갈 때 O (n^2)보다 효율적인 방법을 찾을 수 없습니다. 베이스 의해

+0

O (n)에서 가능해야합니다. math.stackexchange.com을 (또는) 사용해 볼 수도 있습니다. –

답변

3

나누기, 0.

따라서, 예를 들어 16

148/16 = 9 r 4 
    9/16 = 0 r 9 

따라서베이스 (148)를 변환 = 모듈을 푸시 백 린스! 몫 동안 반복 헥스 (148)는 0x94이다 . 이렇게 오래 걸리지 않아야합니다.

+0

불행하게도, 숫자가 충분히 크면 간단하지 않습니다. 현재 컴퓨터 아키텍처에서 1 원자 정수로 표현할 수없는 약 10^100을 생각해보십시오. – summerlight

+0

물론, big_int 클래스와 같은 일부 추상화를 사용할 수 있지만 모듈러 및 나눗셈 연산의 시간 복잡도가 O (n^2)이고 a (n) 모듈러 및 나눗셈 연산이 필요하므로 문제가 악화됩니다. 변환. – summerlight

관련 문제