16진수

16진수에서 10부터 15까지는 표기법은 10은 a, 11은 b, …, 15는 f를 대입하여 사용. 4비트씩 16진수로 변환 후 0x를 붙혀 뒤에 오는 문자들이 16진수임을 알려줌

Untitled

ASCII 코드에 의해 “A, B, C”는 10진수로 65, 66, 67에 해당하고 2진수로 표현시  "01000001 01000010 01000011"이 된다. 컴퓨터가 처리할 수 있어야 하기 때문에 어쩔 수 없지만 그 길이가 너무 긴 것을 알 수 있다.

하지만 16진수로 표현하면 2진수로 표현했을 때 보다 간단해 지고 컴퓨터는 8개의 비트가 모인 바이트 단위로 정보를 표현함. 2개의 16진수는 1byte의 2진수로 변환되기 때문에 정보를 표현하기 매우 유용함

Untitled

메모리 주소

정수형 변수 n에 50이라는 값을 저장하고 출력한다고 가정 했을때 n 이라는 값은 int 타입이므로, 메모리 어딘가에 4바이트 만큼의 자리를 차지하며 저장되어 있다.

Untitled

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);
}

포인터

‘*’ 연산자를 이용해서 포인터 역할을 하는 변수를 선언 가능