티스토리 뷰
1. 메모리 주소
16진수의 유용성
10진수 | 255 | 216 | 255 |
2진수 | 1111 1111 | 1101 1000 | 1111 1111 |
16진수 | 0xff | 0xd8 | 0xff |
컴퓨터 과학에서는 숫자를 2진수 대신 16진수로 표현하는 경우가 많다. 2진법으로 표현할 때에는 너무 길어진 데이터를 16진수로는 간단하게 표현할 수 있기 때문이다. 2^4 는16이므로, 4비트씩 두 덩어리로 나누어보면 0000부터 1111까지 16진수로 간단하게 표현할 수 있음을 알 수 있다. 이처럼 데이터 처리할 때 장점이 많기 때문에 16진수를 사용해 숫자를 표현하는 경우가 많다.
메모리 주소
C언어에서는 변수의 메모리 상 주소를 받기위해 & 연산자를 사용한다.
& 연산자를 통해 변수의 메모리상 주소에 값을 저장하기도 하고, 실제 주소값을 반환 받기도 한다.
#include <stdio.h>
int main(void){
int num1;
scanf("%d", &num1); //40입력
printf("%d",num1); //40출력
int num2=50;
printf("%p\n", &num2); //0x7ffdf9967954
return 0;
}
반대로 * 를 사용해 그 메모리 주소의 실제 값을 얻어올 수도 있다.
말하자면 & 는 ~의 주소를 의미하고, * 은 ~의 주소로 이동해달라는 의미를 가진다.
#include <stdio.h>
int main(void){
int num=60;
printf("%p\n", &num); //0x7fff8a26efd8
printf("%d\n", *&num); //60
return 0;
}
[출처] 부스트코스 | 모두를 위한 컴퓨터 과학(CS50 2019)
'Computer Science > CS50' 카테고리의 다른 글
[CS50 5주차] 3-5. 문자열 (0) | 2021.02.12 |
---|---|
[CS50 5주차] 2. 포인터 (0) | 2021.02.12 |
[CS50 4주차] 알고리즘 (0) | 2021.02.12 |
[CS50 3주차] 배열 (0) | 2021.02.12 |
[CS50 2주차] C언어 (0) | 2021.02.12 |
댓글