- 정수형 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 |