• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

엔디안 질문 드립니다

22.12.05 21:16 작성 조회수 272

0

캡처.PNG

 

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

캡처2.PNG

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

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

답변 2

·

답변을 작성해보세요.

0

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

joke8642님의 프로필

joke8642

질문자

2022.12.05

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

0

joke8642님의 프로필

joke8642

질문자

2022.12.05

캡처3.PNG

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

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