Little Endian과 Big Endian
위의 그림은 Big Endian의 메모리 저장 방식이다. Most Significant Byte(최상위 바이트)부터 메모리에 저장을 하여 Least Significant Byte(최하위 바이트)까지 저장하는 방식이다.
위의 그림은 Little Endian의 메모리 저장 방식이다. 메모리에 저장할 때 LSB부터 저장을 하여 MSB까지 저장을 한다.
이렇게 굳이 2가지로 구분을 해서 저장을 해야 할까? 그냥 Big Endian이든 Little Endian이든 한 가지 방식으로만 통합해서 사용하면 훨씬 편할텐데 왜 이렇게 했을까?
이유는 Big Endian 방식은 논리적인 것들이나 숫자의 대소 비교를 할 때 Little Endian 방식보다 훨씬 빠르다. 예를 들어서 0x98251501, 0x11251501 있다고 하면, 숫자의 대소 비교는 제일 앞부터 비교를 하는 것이 시간을 단축할 수 있다. 만약 Little Endian 방식으로 사용해서 비교를 한다면 3바이트를 비교한 후, 마지막 바이트까지 검사를 해야 숫자의 대소 비교가 끝날 것이다. 또한 사람이 숫자를 읽고 쓰는 방식과 유사하기 때문에 소프트웨어의 디버깅이 쉽다는 장점이 있다.
하지만 계산에 있어서는 Little Endian 방식이 훨씬 효과적이다. 0x0145와 0xFA99가 있다고 하면 앞에서부터 계산하는 것이 쉽겠는가 뒤에서부터 계산하는 것이 쉽겠는가?
'언어 > 큐브인턴(Embedded)' 카테고리의 다른 글
Embeded 기초(ADC, DAC, JTAG) (0) | 2016.09.03 |
---|---|
풀업 저항, 풀다운 저항, 플로팅 (0) | 2016.08.31 |
함수 포인터 (printf함수의 원형과 함수 포인터 사용) (0) | 2016.08.23 |
리눅스 ASLR 해제 (0) | 2016.08.17 |
C언어 컴파일 과정 (0) | 2016.08.16 |