작성
·
389
0
공부하던 도중에 메모리에 적재되는 순서가 이상한 거 같아서 만들어서 확인해봤습니다.
확인 결과 4바이트는 순서가 정확한데 8바이트로 한번에 읽을 때 왜 저런 형태가 되는 지 궁금합니다.
추가로 item 구조체에 num값과 m 값을 메모리에 적재할 때 0x0000 0003 / 0x0000 0001 이렇게 적재 됐는데 리틀 엔디안에 의하면 03 00 0000 / 01 00 0000 으로 표기돼야하는 거 아닌가 싶은데 제가 무엇을 잘못 이해하고 있는 걸까요?
답변 2
0
0
리틀 엔디언 환경에선 순서가 뒤바뀌기 때문입니다.
진짜 데이터에 들어간 값은 낮은 주소부터 시작해서 01 00 00 00 입니다.
즉 바이트 단위로 보는게 실제 물리적으로 저장된 값과 일치한다는 얘기입니다.
그 외 2, 4, 8 등으로 묶어서 보면, 2, 4, 8바이트 씩 묶어서 판별하는데
리틀 엔디언 특성상 데이터가 뒤집혀 있기 때문에, 이를 2, 4, 8 바이트 단위로 뒤집어서 읽게 됩니다.
즉 01 00 00 00 이걸 4바이트로 묶어서 보면 뒤집혀서 0x00000001로 인식해야 맞는 것이죠.
아 그렇다는 건 1바이트로 보면 실제 메모리 값으로 나오고 2,4,8 등은 비주얼스튜디오에서 값을 다시 뒤집어서 보여준다는 말씀인가요?