강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của hudevelop
hudevelop

câu hỏi đã được viết

[Loạt bài phát triển game MMORPG bằng C++ và Unreal] Phần 1: Nhập môn lập trình C++

luyện tập con trỏ

엔디안 질문 드립니다

Viết

·

462

0

캡처.PNG

 

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

캡처2.PNG

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

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

C++

Câu trả lời 2

0

Rookiss님의 프로필 이미지
Rookiss
Người chia sẻ kiến thức

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

joke8642님의 프로필 이미지
joke8642
Người đặt câu hỏi

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

0

joke8642님의 프로필 이미지
joke8642
Người đặt câu hỏi

캡처3.PNG

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

Rookiss님의 프로필 이미지
Rookiss
Người chia sẻ kiến thức

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

Hình ảnh hồ sơ của hudevelop
hudevelop

câu hỏi đã được viết

Đặt câu hỏi