Programming Language/C2010. 10. 14. 19:31

 1.c


- 정수형 data의 메모리 표현을 출력시키는 프로그램을 구현해보았습니다.


** 소스 의

  scanf("%d",&num);
부분과 바뀐
  while((ch=getchar())!='\n' )
    num=num*10+(ch-'0');
을 비교하며 어떤 차이가 있을지 생각해 보시기 바랍니다. **

/* 실습)주어진 정수형data의  내부 (메모리상의) 표현을 출력시켜주는 프로그램을 짜시오.
 -입력은 int num;
 scanf("%d", &num);
 -출력은 한비트씩 check한 후에
 그 결과가 0이면 printf("0");
 0이 아니면 printf("1");
 -&,Shift 연산자 사용해서 해결.
*/


#include<stdio.h>

int main(void){
 int num=0,ch;
 int i=0;
 unsigned int x = 0x80000000;
// unsigned int x = 020000000000;
 
 puts("내부표현(2진수)할 정수형 data를 입력하시오.");
// scanf("%d",&num);
 while((ch=getchar())!='\n' )
  num=num*10+(ch-'0');
 printf("%x\n",x);
 while(i < sizeof(int)*8){
  if((num & x) == 0)
   printf("0");
  else if((num & x) != 0) //==1로 해주면 안된다. 1이나오는 것이아니라 1*2ⁿ이 나오는 것이다.
   printf("1");  //0이 아닌 값일땐 1출력.
  x>>=1;     // x=x>>1;
  i++;
 }
 //printf("%d",i); return 0;
}

 

 

이 글은 스프링노트에서 작성되었습니다.

'Programming Language > C' 카테고리의 다른 글

C Tutorial (역순화 문자열)  (0) 2010.10.14
C Tutorial (문자열크기비교)  (0) 2010.10.14
C Tutorial (실수형to문자열)  (0) 2010.10.14
C Tutorial (문자열to실수형)  (0) 2010.10.14
C Tutorial (16진법to10진법)  (0) 2010.10.14
Posted by BLUE-NOTE