본문 바로가기

카테고리 없음

독하게 공부하는 C 스터디 - 1주차 정리

 

 

강의 참고 : 독하게 공부하는 C 프로그래밍

 

독하게 시작하는 C 프로그래밍 강의 | 널널한 개발자 - 인프런

널널한 개발자 | 취미가 아닌 전문 개발자의 길을 가려는 분들을 위한 C언어 프로그래밍 강의입니다. 쓰고 독하게 배워서 달달한 길로 가고 싶은 분들에게 권합니다!, C언어 ‘제대로’ 하고 싶

www.inflearn.com

 

 

 

섹션 1. 디지털 세계

디지털 - on, off의 2진법 세계.

스위치 On - 1 / Off - 0

스위치 1개당 - 1bit. 4개가 있으면 4bit.

8bit는 1개의 메모리 관리 단위로 1byte를 의미함. 

 

 

컴퓨터의 덧셈

XOR, AND 회로 필요. 

반가산기는 자리올림 불가능.

따라서 자기올림까지 가능하게 한 전가산기 사용. 

전가산기 64개를 이으면 64bit 전자계산기 구현 가능. 

 

CPU는 연산 기계임으로, 두 수를 더할 수 있으면 CPU 만들 수 있음. 

 

 

 

 

 

섹션 2. 진법 변환

2진수 쓰는 이유 -> 디지털이 on, off 2가지 상태만을 가지기에. 

4bit 의 경우, 2^4, 16가지 경우의 수 존재. 

따라서 4bit를 표현하기 위해 16진수 사용. 

16진수로 변환하려면 8 4 2 1 로 표기해서 구하면 쉽다. (요령!)

 

16진수 활용 예 - 컴퓨터 하드웨어 주소 표현 / 메모리에 저장된 값 표현. 

 

 

 

 

 

 

섹션 3. 컴퓨터 구조에 대한 이해. 

 

컴퓨터(=전자 계산기)의 핵심은 CPU와 메모리 

CPU는 연산을 하고, 메모리는 그 연산 꺼리를 저장하고, 전산 결과를 다시 저장하는 장소. 

 

이때 주기억장치(RAM)은 번호(주소)로 관리함. 

 

 

 

실행 

실행 = CPU의 연산. (큰 관점에서보면.)

 

 

참조

관련 개념 - C언어 포인터, Java 참조형, C++ 참조. 

참조의 대상과 참조자가 존재. 

참조의 대상이 먼저 존재. 

참조자 = 대상체에 접근할 수 있는 근거 자료. 

ex) 엑셀. 

 

 

CPU의 다른 이름 Machine.

S/W - Logical

H/W - Physical

 

H/W <- CPU

소프트웨어의 User mode 단에 프로그램이 존재함. 

이 프로그램을 우리가 C언어로 만들려는 것임. 

그리고 프로그램은 CPU에 의해 실행됨. 

프로그램 (프로세서) 내의 명령어들이 cpu에 의해 연산되면서 실행. 

프로그램을 만드는 C언어는 위치상 위에 위치하기에 고급어, high level language 라고 하며

CPU에서 작동하는 머신 코드는 아래쪽에 위치하여 기계어, low level 이라고 말함. 

 

 

 

컴퓨터의 뺄셈. 

방법

1. A - B할때 B의 2진수를 구한다. 

2. 구한 2진수의 2의 보수를 구한다. 

3. A에 2의 보수를 더한다. 

4. 올림값은 삭제한다. 

 

 

컴퓨터의 곱셈. 

방법

1. Left Shift

1칸씩 왼쪽으로 밀때마다 곱하기 2.

3곱하고 싶으면 한 번 밀고 1번 더하면 됨. 

맨 오른쪽은 Zero padding. 

 

컴퓨터의 나눗셈

방법

Right Shift. 

1칸씩 오른쪽으로 이동. 

맨 왼쪽은 Zero padding.

숫자 A를 Right Shift 하면, 

A % 2한 값이 나옴.

 

나눗셈은 계속 빼는 걸 말하는 데, 만약 0으로 나눌 경우 빼도 값이 유지되기에 연산이 끝나지 않음. 

 

 

 

실수형. 

부동 소수점 표현. 

두 정수 사이 무수히 많은 실수 있기에 일정 수준 오류(부동소수점 오차)를 인정함. 

그래서 되도록 float은 잘 안쓰고, double형을 사용. 

float  크기 - 4byte 

double 크기 - 8byte - 유효 자릿수 : 소수점 이하 15자리. 

 

 

 

 

 

 

섹션 4. CPU 수준 자료형. 

자료형 : 자료 + 형식

개념 : 일정 길이의 메모리에 저장된 정보를 해석하는 방법. 

자료는 결국 숫자이고, 변수와 상수 2종류 있음. 

 

C언어 자료형

- 정수형

- 실수형

- 유도형

- 함수형

- 무치형 (void)

 

리터럴 상수

- 문자 상수, 문자열 상수, 정수 상수, 실수 상수

 

변수

: 메모리를 사용하는 가장 일반적인 방법. 

 

정수형

char - 1byte

int - 4 byte

char - 문자 1개를 저장함. 어떻게? 문자는 숫자이기에,

결국 char 자료형은 문자를 숫자로 바꿔 저장하는 자료형임. 

 

 

 

 

 

 

섹션 5. 코드 체계

 

컴퓨터가 글자를 다루는 방법 - ASCII

 

십진수 65 = 대문자 'A' = 16진수 0x41

 

문자열 = 문자 배열. 문자를 여러 개 나열한 것. 

 

 

 

 

 

 

섹션 6. 프로그래밍 언어 구조. 

기계어 <(좀 더 사람이 이해 가능) 디스어셈블 코드 < 고급어. C언어 코드. 

 

컴파일러 

소스코드를 기계어로 번역하는 프로그램. 

전체 소스코드를 한 번에 기계어로 변환 후 실행. 

성능 최적화에 용이. 왜냐? 한 번에 번역하니까 ! 

 

인터프리터 

고급어 소스코드를 직접 실행하는 프로그램이나 환경을 의미

한 번에 한 줄 단위로 실행. 

성능면에서 느림. 한 줄씩 실행하기에 최적화 불가능하기 때문..

따라서 고성능 나타내기엔 유리하지 않음. 

 

 

 

 

섹션 7. 개발환경 구축. 

VS 코드 단축키

F5 - 디버그 모드 실행

Shift F5 - 디버그 모드 강제 중단

F7 - 프로젝트 빌드

F9 - 중단점 설정

F10 - 디버그 모드에서 한 행 실행

F11 - 디버그 모드에서 함수 추적

Ctrl + F5 - 실행.

F4 - 에러 발생시 발생 위치로 이동!

 

 

중요한 세가지 시점. 

1. 컴파일 타임

    .c 소스코드를 목적파일 .obj로 번역

    번역 전에 문법 검사에서 에러 있으면 컴파일 하지 않음. 

    .obj 파일엔 기계어가 들어감. 

2. 링크 타임

    목적 파일과 라이브러리를 실행 파일로 합성. 

3. 빌드 타임 = 컴파일 + 링크

4. 런타임(실행) 

 

 

소스파일과 목적파일

C언어 소스코드 파일 확장명 = .c

목적파일 - .obj

외부 라이브러리 파일 - .lib

.obj 와 .lib 합성해 실행파일 .exe 생성. 

 

 

솔루션 파일과 프로젝트

한 솔루션에 여러 프로젝트 존재. 

만약 한 프로젝트를 '시작 프로젝트' 로 설정하면

해당 프로젝트에 대해 빌드/디버그를 함!

 

 

 

 

1주차 섹션 0 ~ 7 까지 정리 완료~