1. 엔디언(Endianness)이란?
- 컴퓨터의 메모리와 같은 1차원 공간에 여러 개의 연속된 대상을 배열하는 방법.
- 바이트를 배열하는 방법을 바이트 순서(Byte-Order)라 한다.
- 3가지 방식의 엔디언이 존재함.
Big-Endian | - 큰 단위의 바이트가 앞에 나오는 방법 |
Little-Endian | - 작은 단위의 바이트가 앞에 나오는 방법 |
Middle-Endian | - 두 경우에 속하지 않거나 둘 다 지원하는 경우 |
- 또한 endian을 이해하기 위해서는 LSB와 MSB에 대한 이해도 필요하다.
MSB | - Most Significanct Bit (가장 큰 비트 자릿수) |
LSB | - Least Significanct Bit (가장 작은 비트 자릿수) |
- 0x1234578의 값을 메모리에 각각 Big-endian과 Little-endian으로 저장하는 경우에 대해 확인해보고자 한다.
2. Big-endian
- 먼저 Big-endian은 우리가 숫자를 쓰는 방법과 같이 큰 단위의 바이트가 앞에 나오는 방법이다.
- 즉, 낮은 주소에 데이터의 높은 바이트(MSB)부터 저장하는 방식
3. Little-endian
- 낮은 주소에 데이터의 낮은 바이트(LSB)부터 저장하는 방식.
4. Big-endian VS Little-endian
- 두 방식은 단지 데이터를 저장할 때의 방식 차이뿐이며, 어느 방식이 더욱 좋다고 단정 할 수 없다.
- 각 방식의 특징을 정리하면 다음과 같으며, 느림, 빠름, 어려움, 쉬움은 상대적인 값이다.
Big-endian | Little-endian | |
대표 회사 | IBM | Intel |
형 변환 | 느림 | 빠름 |
숫자 비교 | 빠름 | 느림 |
디버깅 | 빠름 | 느림 |
캐리 값 처리 | 어려움 | 쉬움 |
네트워크 바이트오더 | X | O |
5. 네트워크 바이트오더
- 두 호스트간 통신을 할 때 A PC는 Little-endian, B PC는 Big-endian을 사용할 경우 통신이 되지않는 문제가 발생.
- 이러한 문제를 해결하기 위해 네트워크를 통해 데이터를 전달할 때는 통일된 방식을 이용해 전송하기로 약속 했으며, 이것이 "네트워크 바이트오더"임.
- 네트워크 바이트오더에 의해 Big-endian 방식을 사용하도록 규정되어, Little-endian을 사용할 경우 Big-endian으로 변환해야 한다.
6. 내 PC의 Endian 확인하기
- 실행결과
- 참고