코딩, 프로그래밍 이란?
컴퓨터 cpu 에게 일을 시키는 것
cpu에게 시킬 수 있는 일
- 메모리에 데이터를 쓴다 (write)
- 메모리의 데이터를 읽는다 (read)
메모리에 데이터를 읽고 쓰려면, 필요한 정보
- 메모리 주소
- 해야할 작업 (read, write)
- 쓸 데이터
프로그램이란?
cpu에 시킬 작업을 모아둔것
cpu에게 시킬일을 사람이 알아볼 수 있는 언어로 정리해놓은 것
( 클락 - cpu, 메모리 간의 싱크 맞추기 위한 용도 )
컴파일러란?
사람의 언어를, cpu의 언어(기계어)의 명령에 대응시킨 약속.
컴파일이란?
사람의 언어를, cpu의 언어(기계어)로 변환하는 작업
아스키코드란?
사람의 언어(영어)를 8비트의 기계어에 대응시켜 만든 규칙 - 7비트만 사용
C언어 시작하기
#include <stdio.h>
// main()함수의 return값을 int값으로 줄거야
int main() {
int i;
/*
32비트 컴퓨터 기준
메모리에서 4바이트를 떼어내서, i라고 저장해줘
( 정수를 담을때 4바이트를 사용하기로 약속 )
char : 1바이트, 정수, 문자를 넣을때 8비트가 필요하므로
short : 2바이트, 정수
long : 8바이트, 정수
float : 8바이트, 실수
double : 8바이트, 실수
*/
i = 100;
printf("Hello world : i = %d\n",i);
return 0;
}
/* */ // 무의미한 코드, 주석
변수 선언시 조건 ( c )
- 공백 포함 불가
- 미리 지정된 키워드 사용 불가
비트 : 1과 0을 표현할 수 있는 메모리의 가장작은 1칸
데이터 타입 : "메모리의 공간을 할당해줘"
sizeof(변수) : 변수의 할당된 메모리공간 크기를 바이트 단위로 출력
변수를 사용한다 -> 메모리를 할당한다 -> 사용하는 메모리 사이즈를 관리하는 것이 중요하다.
int 타입지정시 양수만 사용하도록 하기
unsigned int i;
cpu가 사용할 기계어도, 메모리에 저장되어 있다.
cpu 내부에도 메모리가 존재한다 : 레지스터 (register)
메모리에 cpu가 할일이 순서대로 적혀있다.
cpu는, IP (Instruction Pointer)가 가리키고 있는 할일을 처리하고,
그 순간 IP는 다음할일을 가리키고, 일을 순서대로 진행 할 수 있도록 한다.
cpu 메인 아키텍쳐는 똑같다, 확장해 나가는 것
vgc 는 메모리의 데이터를 가져다 쓴다?
포인터 - 메모리 주소값을 저장해놓은 메모리
#include <stdio.h>
void main(){
int i=100;
// 4바이트 메모리 할당, 포인터 i ,데이터 100
int *ip = &i;
// int * : 정수값을 가진 변수가 시작하는 메모리주소를 담을거야 , 나중에 int 형의 사이즈 만큼 메모리를 불러온다.
printf("ip = %x\n",ip);
// ip : i의 주소
printf("*ip = %d\n",*ip);
// *ip : ip의 값, int 형 포인터로 지정되었으므로, 첫주소로 부터 4바이트를 읽어온다.
*ip = 200;
printf("*i = %d\n",i);
printf("*ip = %d\n",*ip);
}
반응형