본문 바로가기
공부(~2016)/알고리즘

[알고리즘/C언어] 10진수를 2진수로 변환

by soy; 2013. 12. 22.

 

#include<stdio.h>
 
int main(void)
{
    int num=6, n[10], i=0;
 
    do
    {
        n[i]=num%2;
        num=num/2;
        i++;
    }while(num);
 
    for(i=i-1; i>=0; i--)
        printf("%d", n[i]);
 
    printf("\n");
    return 0;
}
cs


수기로 구하는 방식대로 짠 것

do while으로 한 이유는 ? input이 0 일때도 제대로 되게 하려고 그런 것 같음





 

#include<stdio.h>
 
int main(void)
{
    int num=6, i=0, chk=0;
 
    for( i=sizeof(int)*8-1; i>=0; i-- )
    {
        if( ( ((num>>i) & 1) && !chk) || i==0 )
            chk=1;
 
        if(chk)
               printf("%d", (num>>i) & 1);
     }
 
    printf("\n");
    return 0;
}
cs


비트연산자로 한 것

32비트 다 찍어줌.. 앞에 무의미한 0 출력되지 않도록 chk 변수를 넣어봤음

댓글0