임베디드

[메모리] 빅/리틀 엔디안 (Big/Little-Endian)

히똔 2022. 4. 5. 16:09
728x90
반응형

빅엔디안 / 리틀엔디안 / Big Endian / Little Endian / 엔디안 / 메모리 저장 순서 / 엔디안의 어원 / 엔디안 유래 / 메모리 저장 방식 / 임베디드 개발자

 

엔디안(Endian)이란?

CPU가 메모리에 값을 저장할때 저장하는 순서 (바이트 순서).
바이크 단위로 표기하고, 어떤순서로 기록할 것인지에 따라 두가지가 존재한다.

 

 

빅 엔디안 (Big-endian)

사람이 읽는 순서대로 저장하기 때문에 읽기 편하다. 그래서 디버깅이 쉽다. 

출처 위키피디아

예를 들어, 0x12345678을 빅엔디안에서는 그대로 12345678로 저장한다.

메모리 주소 저장 값
0x0001 12
0x0002 34
0x0003 56
0x0004 78

 

 

리틀 엔디안 (Little-endian)

사람이 읽기 비교적 불편하다. byte단위로 거꾸로 저장한다.
인텔/AMD CPU에서 이 방식을 이용하고 있다.

출처 위키피디아

리틀엔디안 같은 경우, 0x12345678을 78563412 로 저장한다.

메모리 주소 저장 값
0x0001 78
0x0002 56
0x0003 34
0x0004 12

임베디드 장치도 리틀엔디안을 쓰기 때문에 이 부분을 잘 알고 있어야한다.

 

이클립스 디버깅시에도 메모리에 다음과 같이 표시된다.

Window > Show Views > Memory 를 선택하면 Memory 창을 확인할 수 있다.

 

추가 예시

빅 엔디안 리틀엔디안
0xABCDEF12 ABCDEF 12EFCDAB
0x12345678 12345678 78563412
0x1234ABCD 1234ABCD CDAB3412
0x78563412 78563412 12345678

 

 

빅/리틀 엔디안의 어원

프로그래밍 하면서 그렇게 중요한 내용은 아니지만 재미로 적어보자면, 빅엔디안과 리틀엔디안은 걸리버여행기에서 유래되었다고한다.

걸리버 여행기중 소인국에서는 계란을 깨먹을때 뭉퉁한 쪽(Big-end)으로 깨먹어야 한다는 쪽과 뾰족한 쪽(Little-end)으로 깨먹어야한다고 주장하는 쪽이 서로 싸웠다고 한다. 이런 쓸데없는 싸움때문에 6번의 전쟁이 일어났다고 한다.

빅엔디안을 쓰든 리틀엔디안을 쓰든 메모리 저장방식 차이일 뿐 결과는 똑같이 나오기 때문에 여기서 이름을 따서 지은것 같다.

 

 

[리눅스] Bash 쉘 프로그래밍 : 입출력, 변수, 주석, if문

쉘에서 쓰는 언어는 생소하다. 그래서 새로 배워야함! 출력 echo 명령어를 이용한다. echo HI 입력 read 명령어를 이용한다. read input echo $input 변수 생성 변수이름=값 으로 변수를 만들 수 있다. first=10

asdfmelody.tistory.com

 

728x90
반응형