부스트코스/5. 메모리

[CS50] 5.1 메모리 주소

fromslow 2021. 2. 4. 21:40

16진수

16진수를 사용하면 10진법보다 2진법을 더 간단하게 나타낼 수 있다.

알파벳 C를 10진수로 변환하면 67,

10진수인 67을 2진수로 변환하면 01000011이다.

16진법은 위의 2진수를 4bits씩 두 덩어리로 나눈 후(0100 0011) 각각을 계산한다.

0100 -> 4

0011 -> 3

2의 4승이 16이기 때문에 4bits씩 나눈다.(16까지만 나타낼 수 있으므로)

 

그리고 16진수라는 것을 명시하기 위해 '0x'를 앞에 붙여준다. 이는 아무 의미없는 문자이다.

결국 C의 16진수는 '0x43'이 된다.

 

이렇게 16진수는 정보를 표현하기가 매우 유용하다.

 

 


 

메모리 주소

어떤 변수에 정수를 저장했을 때, 이 정수는 메모리 어딘가에 4바이트만큼 공간을 차지할 것이다.

C에서 정수가 저장돼있는 메모리 주소를 받기 위해서는,

'&' 연산자를 쓴다. &는 ~의 주소를 의미한다.

& 연산자를 쓰면 형식 지정자는 %p로 나타낸다. %p는 주소를 출력해준다.

#include <stdio.h>

int main(void)
{
    int n = 50;
    printf("%p\n", &n);
}

이를 실행하면 0x7ffe00b3adbc 이라는 16진법의 메모리 주소가 출력된다.

 

printf("%p\n", *&n);처럼 &앞에 *를 붙이면 그 주소에 저장된 값을 출력하게 된다.

 

 

 

 

 

 

출처: www.boostcourse.org/cs112