빅엔디안 / 리틀엔디안 / 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 |
임베디드 장치도 리틀엔디안을 쓰기 때문에 이 부분을 잘 알고 있어야한다.
이클립스 디버깅시에도 메모리에 다음과 같이 표시된다.
추가 예시
값 | 빅 엔디안 | 리틀엔디안 |
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
'임베디드' 카테고리의 다른 글
[C언어] 자료형 : float, double, 부동소수점, 고정길이정수 (0) | 2022.04.08 |
---|---|
[메모리] 2의 보수와 음수 처리 / 2의 보수 쓰는 이유 (0) | 2022.04.06 |
[리눅스] Bash 쉘 프로그래밍 : 입출력, 변수, 주석, if문 (0) | 2022.04.03 |
[리눅스] 쉘 스크립트 : Bash Shell 시작하기, 쉬뱅 (0) | 2022.04.02 |
[리눅스] 터미널의 개념 : 과거와 현재 정의 비교 (0) | 2022.03.27 |