십진수를 3 진으로 변경하는 방법은 무엇입니까? 나는 modulo를 사용하지 않고 메서드를 나누고 싶지 않다는 것을 의미한다. 128123832812381835828638486384863486과 같은 매우 큰 10 진수를 가진다. ............. 1237127317237 등등.C 10 진수에서 3 진수로 빠른 기본 변환
또한 bigints를 사용하고 싶지 않습니다.
어떤 방법이 있습니까?
십진수를 3 진으로 변경하는 방법은 무엇입니까? 나는 modulo를 사용하지 않고 메서드를 나누고 싶지 않다는 것을 의미한다. 128123832812381835828638486384863486과 같은 매우 큰 10 진수를 가진다. ............. 1237127317237 등등.C 10 진수에서 3 진수로 빠른 기본 변환
또한 bigints를 사용하고 싶지 않습니다.
어떤 방법이 있습니까?
나누기/모듈을 사용할 필요가 없습니다. 대신 입력 숫자를 낮은 값에서 높은 값으로 반복합니다. 각 자리 위치에 대해 먼저 1000....000
이 출력 표현 (10의 10의 이전 거듭 제곱)에 포함되도록 계산하십시오. 그 결과를 숫자로 곱하고 출력 표현에 누적하십시오.
출력 표현에서 곱셈과 덧셈을 수행하는 루틴이 필요합니다. 곱셈 루틴은 추가 루틴의 관점에서 작성할 수 있습니다.
예 :
베이스 (3) 246 (베이스 (10))로 변환.
"accumulator"출력을 초기화하여 시작 a = "0"
.
"승수"m = "1"
을 초기화하십시오.
또한 출력 표현에서 10은 "101"
입니다.
첫 번째 자릿수는 d = "20"
인 6입니다.
t = d * m = "20" * "1" = "20"
.a = a + t = "0" + "20" = "20"
.m = m * "101" = "1" * "101" = "101"
.둘째 자리 d = "11"
4이다.
t = d * m = "11" * "101" = "1111"
.a = a + t = "20" + "1111" = "1201"
.m = m * "101" = "101" * "101" = "10201"
.셋째 자리 d = "2"
인 2이다.
t = d * m = "2" * "10201" = "21102"
.a = a + t = "1201" + "21102" = "100010"
.따라서 답변은 "100010"
입니다.
코드는 여기에서 찾을 수 있습니다. http://www.codeproject.com/KB/recipes/BaseConverter.aspx –
몇 가지 예를 들어 설명해 주시겠습니까? 왜냐하면 나는 노력하고 있기 때문에, 그러나 할 수 없다. – Spinach
@user : 내 업데이트 된 답변보기. –
제 3의 의미는 무엇입니까? 기지 세? –
"십진법"이라고 할 때, 인간이 읽을 수있는 문자열 표현을 가지고 있다는 것을 의미합니까? –
"기본 변환 알고리즘"에 대한 검색 결과가 Google에 많이 있습니다. 어떤 링크가 도움이 되었습니까? –