반응형
안녕하세요.
C언어 예제로 간단하게 시스템 특성을 알아보는 예제입니다.
1. Byte Ordering Test
[ 예제소스 1-1 ]
int main()
{
unsigned char * p;
unsigned int test=0x12345678;
p=(unsigned char *)&test;
printf("%02x %02x %02x %02x ",*p,*(p+1),*(p+2),*(p+3));
return 0;
}
1. Little Endian (LSB First) : 78 56 34 12
2. Big Endian (MSB First) : 12 34 56 78
2. Long Long and Double Byte Ordering Test
[ 예제소스 2-1 ]
int main()
{
unsigned char * p;
double test= 0x1020304050607080;
p = (unsigned char *)&test;
printf("%02x %02x %02x %02x %02x %02x %02x %02x", p,*(p+1),*(p+2),*(p+3),*(p+4),*(p+5),*(p+6),*(p+7));
return 0;
double test= 0x1020304050607080;
p = (unsigned char *)&test;
printf("%02x %02x %02x %02x %02x %02x %02x %02x", p,*(p+1),*(p+2),*(p+3),*(p+4),*(p+5),*(p+6),*(p+7));
return 0;
}
1. Pure Endian
-1 *Big-endian : 43 b0 20 30 40 50 60 70
-2 Little-endian : 70 60 50 40 30 20 b0 43
-2 Little-endian : 70 60 50 40 30 20 b0 43
2. Mixed Endian
-1 Big-endian : 40 50 60 70 43 b0 20 30
-2 *Little-endian : 30 20 b0 43 70 60 50 40
-2 *Little-endian : 30 20 b0 43 70 60 50 40
3. Memory Alignment Test
[예제 소스 3-1]
struct struct_align
{
double d;
char c;
} align;
int main()
{
struct struct_align a[2];
struct struct_align *p, *p1;
printf("sizeof(struct_align)=%ld\n", (long)sizeof(struct struct_align));
p = &a[0];
p1 = &a[1];
if (2*(sizeof(double)) != ((long)(p1) - (long)(p)))
printf("4 byte alignment\n");
else
printf("8 byte alignment\n");
return 0;
}
1. 4 byte alignment
2. 8 byte alignment
반응형
'IT' 카테고리의 다른 글
생활속에 숨어 있는 QR코드 (16) | 2011.04.28 |
---|---|
[ Win32 - C언어 ] 초간단 한글 IME 입력기 구현하기 (10) | 2011.04.22 |
[ 네이트온 팁 ] 상대가 나를 삭제했는지 아는 방법 (2) | 2011.03.20 |
[ 디버깅 팁 ] Visual studio 에서 메모리번지에 브레이크 포인트 걸기 (0) | 2011.03.11 |
[ IP 추적 ] 간단하게 IP 주소로 사는 지역을 알려주는 사이트. (0) | 2011.03.07 |