발췌 : Superstar's New World
엔디안(Endian)이라는 단어 솔직히 컴퓨터 관련 업종에 있다보면 수없이 들어봤음직한 단어이다.
그런데도 갑자기 Endian 이 뭐냐고 물어보면... 뭐라고 해야하나?? -_-;;
간단히 말하면..
Endian이란 녀석.. 메모리란 1차원적인 공간의 데이터를 처리하기 위한 접근 방식이라고 하면 될려나??
일단 컴퓨터를 통해 무엇인가를 하려 한다면 메인 메모리에 접근을 해야만한다. 그런데 이 메인 메모리에 접근하는 데에도 방식이 있단다.
바로 Endian!!
이것이 헷갈리는 이유는 Endian이 하나가 아니고 두개라서(?) ㅋ
먼저 Big Endian 이란 녀석을 보자.
구글에서 검색을 하니 이런 사진이 검색이 되던데.. 설명하기에 좋은 사진인 듯 하다.
한 워드의 데이터가 메인 메모리 공간에 접근할 때, 데이터의 가장 상위 바이트가 메모리의 가장 낮은 주소로 접근하는 방식이다. 물론 데이터의 가장 하위 바이트는 메모리의 가장 큰 주소로 접근할 것이다.
이것이 Big Endian 이란 녀석이다.
Big Endian은 표현되는 순서가 사람이 보는 관점과 동일하다. 그렇기 때문에 디버깅이라든지 다른 작업시 메모리 값을 확인하기가 편하다.
예를 들어 0x12345678 이라는 값이 있다면, 각 메모리 주소에는 0x12, 0x34, 0x56, 0x78 이 들어있게 되는 것이다.
다음은 Little Endian..
Little Endian 은 Big Endian 과 정 반대의 접근 방식이라고 보면 된다.
한 워드의 데이터가 메인 메모리 공간에 접근을 한다면, 데이터의 가장 상위 바이트는 메모리의 가장 상위의 주소로 접근을 하고, 데이터의 가장 하위 바이트는 메모리의 가장 낮은 주소로 접근을 하게 된다.
위에서 예를 든 0x12345678을 Little Endian 식으로 표현을 하면 메모리 주소에는 0x79, 0x56, 0x34, 0x12 가 들어있게 된다.
Little Endian 이든 Big Engian 이든 한 바이트 단위로 접근을 한다면 아무런 문제 없이 사용할 수 있다. 하지만, 그 이상의 단위로 접근을 하게 될 때에 이를 잘못 사용한다면.. 뭐 정상적인 동작을 하지 않을 것이다.
'프로그래밍 > VC++ 개발 코딩' 카테고리의 다른 글
fstream (ifstream, ofstream) (0) | 2014.01.17 |
---|---|
Make file for window (0) | 2014.01.17 |
type casting (cast) (0) | 2014.01.17 |
Enum과 bit연산 (0) | 2014.01.17 |
[링크스크랩] [C++] stl vector 사용법 (0) | 2014.01.17 |