반응형

자기가 사용하는 CPU의 바이트 순서를 살펴보는 프로그램을 포인터를 이용하여 작성해보자. 바이트 순서(byte ordering, endian)는 컴퓨터의 메모리에 바이트를 배열하는 방법을 의미한다. 바이트 순서는 보통 큰 단위가 앞에 나온느 빅 엔디언(Big-endian)과 작은 단위가 앞에 나오는 리틀 엔디언(Little-endian)으로 나눌 수 있다. 아래의 프로그램에 주석을 추가하라.

빅 엔디언 : 0x12345678의 표현 : 12 34 56 78

리틀 엔디언 : 0x12345678의 표현 : 78 56 34 12

1
2
3
4
5
6
7
8
9
#include <stdio.h>
int main(void)
{
int x = 0x12345678;
unsigned char *xp=(unsigned char*)&x; //포인터 xp의 값은 x의 주소(char형이라서 배열 원소당 바이트 1(비트 8))
printf("바이트순서: %x %x %x %x\n", xp[0], xp[1], xp[2], xp[3]);
printf("바이트순서: %x %x %x %x\n"*xp, *(xp+1), *(xp+2), *(xp+3));
return 0;//출력 값을 보면 인텔 시피유는 리틀 엔디언 방식을 취한다는 것을 알 수 있다.
}
cs

0x : 정수의 16진수 표현
%x : 16진수 





반응형

'컴퓨터 & 프로그래밍 & 전자공학 > C언어' 카테고리의 다른 글

배열과 포인터  (0) 2016.08.15
정수의 합과 차  (0) 2016.08.15
에라스토테네스의 체  (0) 2016.08.14
술에 취한 딱정벌레  (2) 2016.08.13
2진수 변환기  (0) 2016.08.12

+ Recent posts