인프런 커뮤니티 질문&답변

joke8642님의 프로필 이미지
joke8642

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

포인터 실습

엔디안 질문 드립니다

작성

·

389

0

캡처.PNG

 

공부하던 도중에 메모리에 적재되는 순서가 이상한 거 같아서 만들어서 확인해봤습니다.

캡처2.PNG

확인 결과 4바이트는 순서가 정확한데 8바이트로 한번에 읽을 때 왜 저런 형태가 되는 지 궁금합니다.

추가로 item 구조체에 num값과 m 값을 메모리에 적재할 때 0x0000 0003 / 0x0000 0001 이렇게 적재 됐는데 리틀 엔디안에 의하면 03 00 0000 / 01 00 0000 으로 표기돼야하는 거 아닌가 싶은데 제가 무엇을 잘못 이해하고 있는 걸까요?

답변 2

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

1바이트로 끊어서 보시면 제일 편합니다.
4바이트로 묶어서 보면 03 00 00 00 을 00000003으로 표기해줄거에요.

joke8642님의 프로필 이미지
joke8642
질문자

아 그렇다는 건 1바이트로 보면 실제 메모리 값으로 나오고 2,4,8 등은 비주얼스튜디오에서 값을 다시 뒤집어서 보여준다는 말씀인가요?

0

joke8642님의 프로필 이미지
joke8642
질문자

캡처3.PNG

1바이트로 보면 순서가 정확한데 왜 바이트를 올리면 위와 같이 표기가 되나요?

Rookiss님의 프로필 이미지
Rookiss
지식공유자

리틀 엔디언 환경에선 순서가 뒤바뀌기 때문입니다.
진짜 데이터에 들어간 값은 낮은 주소부터 시작해서 01 00 00 00 입니다.
즉 바이트 단위로 보는게 실제 물리적으로 저장된 값과 일치한다는 얘기입니다.
그 외 2, 4, 8 등으로 묶어서 보면, 2, 4, 8바이트 씩 묶어서 판별하는데
리틀 엔디언 특성상 데이터가 뒤집혀 있기 때문에, 이를 2, 4, 8 바이트 단위로 뒤집어서 읽게 됩니다.
즉 01 00 00 00 이걸 4바이트로 묶어서 보면 뒤집혀서 0x00000001로 인식해야 맞는 것이죠.

joke8642님의 프로필 이미지
joke8642

작성한 질문수

질문하기