16진수에서 10부터 15까지는 표기법은 10은 a, 11은 b, …, 15는 f를 대입하여 사용. 4비트씩 16진수로 변환 후 0x를 붙혀 뒤에 오는 문자들이 16진수임을 알려줌
ASCII 코드에 의해 “A, B, C”는 10진수로 65, 66, 67에 해당하고 2진수로 표현시 "01000001 01000010 01000011"이 된다. 컴퓨터가 처리할 수 있어야 하기 때문에 어쩔 수 없지만 그 길이가 너무 긴 것을 알 수 있다.
하지만 16진수로 표현하면 2진수로 표현했을 때 보다 간단해 지고 컴퓨터는 8개의 비트가 모인 바이트 단위로 정보를 표현함. 2개의 16진수는 1byte의 2진수로 변환되기 때문에 정보를 표현하기 매우 유용함
정수형 변수 n
에 50이라는 값을 저장하고 출력한다고 가정 했을때 n
이라는 값은 int 타입이므로, 메모리 어딘가에 4바이트 만큼의 자리를 차지하며 저장되어 있다.
C에서는 변수의 메모리상 주소를 받기 위해 **‘&’
**이라는 연산자를 사용할 수 있고 코드를 실행하면 ‘0x7ffe00b3adbc’와 같은 값을 얻을 수 있다.
이는 변수 n의 16진법으로 표현된 메모리의 주소다.
#include <stdio.h>
int main(void)
{
int n = 50;
printf("%p\\n", &n);
}
반대로 **‘*’
**를 사용하면 그 메모리 주소에 있는 실제 값을 얻을 수 있다.
먼저 n의 주소를 얻고, 또 다시 그 주소에 해당하는 값을 얻어와 출력한 것이므로 결국 ‘50’이라는 값이 출력 된다.
#include <stdio.h>
int main(void)
{
int n = 50;
printf("%i\\n", *&n);
}
‘*’
연산자를 이용해서 포인터 역할을 하는 변수를 선언 가능