0. C언어를 배우기 앞서서
프로그래밍 언어를 배우는 이유는 ?
> 컴퓨터를 일을 시키기위해서 배운다.
> 컴퓨터는 0과 1로만 이루어진 2진수로만 작동이 된다.
> 컴퓨터와 대화하기 우리가 이해 할 수 있는 언어로 코딩을 한다.
* 이해 할 수 있는 언어(C) → 컴파일러( 2진수로 변환) → 기계어(2진수)
컴퓨터의 장치의 역활
모니터, 스피커 → 출력장치
마우스, 키보드 → 입력장치
CPU → 연산장치
RAM, 하드디스크 → 저장장치
프로그래밍을 쉽게 접근하기 위해서 쓰이는 방법은?
사람이 사용하기 쉬운 OS(윈도우, 맥, 리눅스)를 컴퓨터와 소통을 한다.
컴퓨터 데이터연상 방식
저장된 데이터(하드디스크)에 있는 데이터가 RAM으로 올라온다.
RAM에 있는 데이터를 CPU가 읽고 연산을 한다.
RAM = 전력 차단시 데이터 삭제 (휘발성)
HDD = 전력을 차단해도 데이터 보존
*데이터 연산속도*
Ex) HDD → 1초 5만 // RAM = 1초 60만 // CPU = 1초 200만
> 병목 지점인 하드 디스크에 맞춰서 데이터를 연산한다.
> CPU의 경우도 RAM과 맞춰서 움직이지만, RAM의 용량이 늘어나면 일정량까지 컴퓨터의 속도는 빨라진다.
# SSD를 사용하는 이유 : 비 휘발성인 HDD의 연산 속도보다 빠르기 때문에 OS, 대용량 데이터 처리등에 사용
RAM
RAM = 비트소자 나열 ( 0V=0, 5V=1 )
비트소자 2개 기준 (총 4가지)
> 전력이 둘다 off = 0 0
> 왼쪽만 들어온다 = 1 0
> 오른쪽만 들어온다 = 0 1
> 둘다 on = 1 1
2진수(0이나 1로만 구성된 언어)만 저장이 가능하다
Ex) 비트가 8개가 모이면 1byte라고 표기 1byte가 1024개가 있으면 1Kbyte
8bit -> 1byte , 1024byte -> 1Kbyte , 1024Kbyte -> 1MB , 1024 MB -> 1GB , 1024GB -> 1TB ....
메모리카드의 경우
비트를 8개씩 쪼개서 주소값이 주어진다. [8Bit(2진수)마다 주소값 존재] (Ex. 01100000 1번 주소값)
2bit = 4가지 (2의 2승)
4bit = 16가지 (2의 4승)
8bit = 256가지 (2의 8승)
10을 2진수로 바꾸면 [Ex. 10/2= 5 ... 0 , 5/2 = 2 ... 1 , 2/2 =1 ... 0 , 1] 1 0 1 0
8비트 안에 10을 넣으려면 00001010이 된다.
메모리안에 있는 숫자의 값을 알 수가 없기 때문에 그 값의 용도를 알려주는 것을 DateType(데이터타입)을 알아야한다.