이 글은 포스텍 김종 교수님의 컴퓨터SW시스템개론(CSED211) 강의를 기반으로 재구성한 것입니다.
이 글에서는 byte ordering에 대해 살펴본다.
* LSB : Least Significant Byte, 제일 작은 byte를 의미한다.
Byte Ordering
모든 컴퓨터는 word라는 단위로 메모리에 접근한다. 32-bit 컴퓨터의 경우 4 byte, 64-bit 컴퓨터의 경우 8 byte이다. byte ordering이란 컴퓨터가 메모리에 값을 저장하는 방식이다. 크게 Big Endian과 Little Endian으로 나뉜다.
주소값은 0부터 시작하며, 값이 커질수록 higher address이다.
Big Endian
LSB가 high address에 저장되는 방식이다. Sun, PPC Mac, Internet, Network 등에서 사용한다.
예를 들어 0x12345678이 저장된다고 하자. 여기서 byte는 16진수 2개를 의미하므로 0x12345678은 12, 34, 56, 78로 나뉜다. 이 때 LSB는 제일 작은 byte인 78을 의미하며, big endian의 경우 LSB가 highest address에 저장되므로 아래 그림와 같이 메모리에 값이 저장된다.
big endian은, 사람이 쓰는 방식과 동일하게 큰 단위의 숫자가 앞에 온다고 생각하면 외우기 싶다.
Little Endian
LSB가 low address에 저장되는 방식이다. x86 등 intel 계열에서 사용한다.
예를 들어 0x12345678이 저장된다고 하자. 여기서 byte는 16진수 2개를 의미하므로 0x12345678은 12, 34, 56, 78로 나뉜다. 이 때 LSB는 제일 작은 byte인 78을 의미하며, little endian의 경우 LSB가 lowest address에 저장되므로 아래 그림와 같이 메모리에 값이 저장된다.
들 수도 있는 의문점
little endian을 보며 한 가지 의문점이 들 수도 있다. 'LSB가 low address에 저장되면, 87654321식으로 저장되는 게 맞지 않나?'
컴퓨터의 최소 단위는 1byte이며, byte는 16진수 2개로 표현된다. 각 endian의 정의는 Least Significant Byte가 해당 주소에 저장되기 때문에 16진수 2개씩 묶여서 해당 메모리에 값이 저장된다.
'CS > OS' 카테고리의 다른 글
[컴퓨터 SW] Storage - RAM & Disk (0) | 2023.06.14 |
---|---|
[컴퓨터 SW] Buffer Overflow (0) | 2023.06.11 |
[컴퓨터 SW] Array/Structure/Union의 할당과 접근 (0) | 2023.06.11 |
[컴퓨터 SW] Calling Convention (0) | 2023.06.10 |
[컴퓨터 SW] Bit를 이용한 컴퓨터의 정보 표현 (2) | 2023.06.07 |