반응형
자기가 사용하는 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 |