title: “실습예제 10진수를 2진수로 바꾸어 출력하라” categories:

  • C

    #실습예제 10진수를 2진수로 바꾸어 출력하라 : 네이버 블로그

#include
int main(void) {
 unsigned int a, c;
 a = 1;
 scanf(" %u", &c);
 a = a<< 7;
 ((a&c) == 0) ? printf("0") : printf("1");
 a = a >> 1;
 
 ((a&c) == 0) ? printf("0") : printf("1");
 a = a >> 1;
 
 ((a&c) == 0) ? printf("0") : printf("1");
 a = a >> 1;
 
 ((a&c) == 0) ? printf("0") : printf("1");
 a = a >> 1;
 
 ((a&c) == 0) ? printf("0") : printf("1");
 a = a >> 1;
 
 ((a&c) == 0) ? printf("0") : printf("1");
 a = a >> 1;
 
 ((a&c) == 0) ? printf("0") : printf("1");
 a = a >> 1;
 
 ((a&c) == 0) ? printf("0") : printf("1");
 return 0;
}

주의할 점

  1. unsigned로 부호비트가 없는 int를 만들자

  2. a«1이 아닌 a=a«1을 적어야 한다 필자는 여기서 헤맸다. 마찬가지로 a=a»1

3.참 거짓일때 1을 출력하는지 0을 출력하는지 잘 계산하자

c를 입력받는다 %u는 부호없는 10진수이다. 입력버퍼를 비울 수 있게 띄어 쓰자

부호없는 1을 만들어 옆으로 7번 비트를 옮겨(2진수로는 1000 0000) 입력한 c와 8번째 자리를 비교한다

비교했으면 1000 0000을 옆으로 한비트 옮겨 0100 0000으로 만든 후 c와 7번째 자리를 비교한다

~반복~

int가 32비트인가? 쓸 수 있으니 꼭 8자리로 하지 않아도 될 듯 하다

업데이트: