본문 바로가기

Programming Language/C

Decimal to Binary translation at C (C에서, 10진수에서 2진수 변환하기)

unsigned long long int_to_bin(int k) {
    if (k == 0) return 0;
    if (k == 1) return 1;
    return (k % 2) + 10 * int_to_bin(k / 2);

unsigned long long은 그냥 unsigned int로 나타낼 수 있다.

하지만 32-bit를 넘어가는 숫자를 표현하고 싶을 때는, 예를 들면 

 

num = 592394

to binary = 1001 0000 1010 0000 1010

 

이와 같은 숫자(10010000101000001010)는 32-bit를 넘어가기 때문에 그냥 unsigned int로 하면 범위가 넘어가 이상한 숫자가 나올 수 있다.

unsigned int 범위: 0 ~ 4,294,967,295

 

그래서 나는 큰 num input을 받을 필요가 있었기에 unsigned long long을 사용했다.

 

그리고 unsigned long의 출력은 "%lu" 이다.

 

- %lu: unsigned long int 출력

- %ld: signed long int 출력