공부 겸 복습 겸
메모리 공간에 데이터를 나열하는 방식을 말한다. 배열처럼 연속된 메모리 공간에 나열되어야 하는 데이터를 저장하는 방식을 말하고, 보통 byte 단위의 이야기를 한다.
![]() | ![]() |
|---|
출처: https://ko.wikipedia.org/wiki/%EC%97%94%EB%94%94%EC%96%B8
즉 주소값이 작은 곳에 큰 단위부터 적으면 Big endian, 주소값이 큰 곳에 큰 단위부터 적으면 Little endian인 것이다...
헷갈리지 않기 위해서 그림을 열심히 그려 두도록 하겠다

주소값이 작은 곳 (x, x+1, x+2, ...) 부터, 큰 값 (0x12는 0x0034보다 아주 큰 값이다) 부터 저장하는 방식이 big endian, 주소값이 큰 곳 (x+3, x+2, ...) 부터 큰 값 (0x12, 0x0034, ...)을 저장하면 little endian인 것이다.
Big endian은 사람이 읽는 방향과 같은 방향이므로 디버깅이 쉽다는 장점이 있다. 가산기를 구현할 때는 little endian이 더 유리하다고 한다. Big endian과 little endian은 서로 성능 상의 차이는 거의 없기 때문에 여기저기서 다양하게 많이 사용하고 있다.
Endian은 참고로 End + 사람.. 을 뜻하는 접미어인데, 걸리버 여행기에서 나오는 계란이 뭉툭한 쪽 (big end)으로 깨야 한다는 파와 계란이 뾰족한 쪽 (little end) 으로 깨야 한다는 파의 다툼에서 유래했다고 한다.
아무래도 좋은 일이라는 뜻이 담겨있는 것 아닐까...
나는 계란은 배쪽으로 깨는 게 손이 안 더러워져서 좋다고 생각한다.
Most significant bit (byte), Least Significant bit (byte)
어떤 데이터에서 젤 중요한 비트와 젤 안 중요한 비트를 말한다. 왜 중요하고 왜 안 중요하냐면 손실되거나 변경되었을 때 전체 데이터에 영향을 주는 정도가 달라서 그렇다.
우리말로는 최상위 비트, 최하위 비트라고 한다.

아무튼 그렇다...
unsigned type에서는 MSB가 부호 값을 기록하므로 또 중요한 역할을 하게 된다.
MSB와 LSB와 관련해서는 또 중요한 문제가 있는데, '통신이나 파일을 저장할 때에 어디서부터 (from LSB/from MSB) 할 것인가'가 그것이다.
시리얼 통신처럼 한 클럭에 한 비트밖에 못 보내는 통신 같은 경우 LSB부터 보낼 것인지 MSB부터 보낼 것인지에 대한 합의가 필요하다.
서로의 통신 방식을 잘못 이해하고 있을 경우, 비트 순서를 역으로 송신하거나 수신받을 수 있고 요러면 값에 큰 오류가 생길 수 있다.