인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

Logan님의 프로필 이미지
Logan

작성한 질문수

독하게 시작하는 C 프로그래밍

16진수 표기가 사용되는 예

64bit 메모리 주소에 들어있는 값이 128bit인 이유가 궁금합니다.

작성

·

864

0

왼쪽 빨간 박스는 "메모리 주소", 오른쪽 노란색 박스는 "Data"

메모리 주소는 64bit(8byte) CPU 체계이므로 4bit씩 16개 묶음으로 표현했고, 각 행마다 있는 메모리 주소에 들어있는 data 즉, 값이 오른쪽에 있는 거구요.

그 오른쪽에 있는 데이터가 16진수(8bit)로 16개가 나열돼 있습니다. 그럼 총 128bit = 16 byte

 

여기서 이해가 안 됩니다. ㅠㅠ

  1. 64bit 메모리 주소는 4bit * 16 = 64(=8byte)


    각 메모리 주소의 데이터는 8bit(1byte) * 16 = 128(=16byte)


    16개로 나열돼 있는 건 동일한데 왜 bit 수가 다른 거죠?

  2. 그리고 데이터에 16진수로 16개 끊은 게 어떤 의미일까요?


    16진수 1개씩 끊어서 총 16개를 각각 하나의 의미로 파악한 후, 전체를 하나의 데이터로 봐야 하는 건가요?

  3. 64bit 메모리 주소의 데이터는 128bit이다. 이렇게 그냥 암기해야 하나요?

답변 3

0

혹시 열이 16개인게 주소가 Ox .....1070에서 Ox .....1080으로 넘어가는게 16진수여서 16개인가요? 그림에서 예를 들면 주소가 Ox .....1071의 값은 54이고 Ox .....107F의 값은 fe인건가요??

0

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

  1. 64비트 시스템은 1바이트(8비트) 메모리 하나에 대해 64비트 주소를 부여해 관리합니다. 메모리 디버깅 창에서 주소가 증가하는 숫자를 보면 10진수로 16씩 증가합니다. 그러니까 0x10씩 증가하겠습니다. 화면에 16바이트가 한 행에 표시되도록 설정했기 때문입니다.

  2. 16진수 한 자리는 4비트 두 자리는 8비트 입니다. 첫 행에 보이는 0x54, 0x45, 0x53 값은 각각 1바이트 입니다. 16개씩 화면에 표시되는 이유는 '열'에서 16을 선택했기 때문입니다.

  3. 64비트 메모리는 1바이트에 64비트 주소를 부여해 관리 할 뿐 128비트 단위와 관련이 없습니다. 잘못 이해한 것입니다.

참고하시기 바랍니다. :)

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

꼼꼼하게 하나 하나 찝어서 알려주셔서 감사합니다 ㅠㅠ 숙지하도록 하겠습니다!!
특히 64 bit 시스템은 1byte마다 64bit 메무리 주소를 부여한다! 감사합니다.

0

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

영문 한 글자 표현할 수 있는 게 1byte(8bit)라서 하나로 묶은 건 알겠는데 음.. 그럼 메모리 주소와는 16개(?)라는 걸 맞추기 위해서 16개로 나열한 걸까요?

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

메모리 주소는 1바이트 마다 부여 합니다. 여러 바이트 데이터를 묶어서 따로 관리하는 개념은 없다고 생각하시는 것이 좋겠습니다. 나중에 구조체 멤버 정렬이나 메모리 패킹 개념에 대해 공부할 때까지는 64비트 시스템은 1바이트 메모리에 64비트 주소를 부여해 관리 한다라고만 생각하시기 바랍니다.

Logan님의 프로필 이미지
Logan

작성한 질문수

질문하기