10 진수를 2 진수로 변환하려고합니다. 코드는 (윈도우 7, 32 비트 MS-VS2010) 꽤 잘 작동 :C : 매우 큰 정수를 이진수로 변환
int main()
{
int k, n;
int binary[100];
printf("Enter the value in decimal \n ");
scanf("%d", &k);
n = (log(k * 1.0)/log(2 * 1.0)) + 1 ; //total no. of binary bits in this decimal
for (int i = n; i > 0; i--)
{
binary[i] = k % 2;
k /= 2;
}
return 0;
}
그러나 한계는 오직 즉 32 비트 지능 크기 값 작동한다는 것입니다. 이 코드를 수정하여 2048 비트 (실제로 617 자리를 포함하는 10 진수)로 작동하도록합니다. 나는 어떤 도서관도 사용할 수 없다.
누군가이 문제를 해결하는 방법을 알려줄 수 있습니까?
예제 코드 스 니펫에 64 비트를 말할 수 있습니까? 그런 다음이 값을 사용하여 더 높은 값으로 확장 할 수 있습니다.
업데이트
1로 내가 문자열을 사용하려고 제안 당. 하지만 문자열을 큰 Int로 변환하는 방법을 이해할 수 없습니다. thsi가 32 비트 int로 변환 될 때 sti()를 사용할 수 없습니까?).
2 번째로 내가 찾을 수있다 :
log(222121212213212313133123413131313131311313154515441315413451315641314563154134156313461316413415635154613415645156451434)
는 라이브러리 함수 log
이를 발견 할 수 있습니까? 그렇다면 해결책은 무엇입니까?
숫자를 'int'대신 문자열로 읽습니다. 그런 다음 문자열에서 숫자를 처리합니다. –
@ legends2k 어떤 라이브러리도 사용할 수 없습니다. – user3891236
라이브러리가 필요없고 입력 문자열을 가져 와서 변환하면됩니다. – 2501