카테고리 없음

[1주차] VEDA 입과 및 컴퓨터 구조

2026. 4. 11. 18:59

VEDA 주간 학습 정리

[1주차] VEDA 입과 및 컴퓨터 구조

이번 주 학습을 한 문장으로 정리하면: VEDA 입과, 컴퓨터 구조, C 언어 기초 학습

작성일: 2026.04.11

주차 이동

◀ 저번주차: 첫 주차라 이전 글이 없습니다

▶ 다음주차: [2주차]C 언어 기본 문법

이번 주 학습 목표

  • VEDA 입과 과정과 지원 프로세스 정리
  • Visual Studio 설치 및 C 개발 환경 구축
  • C언어 컴파일러의 빌드 과정 이해
  • 컴퓨터가 프로그램(기계어 스크립트)을 실행하는 흐름 이해
  • 정수, 실수, 문자를 이진수로 표현하는 방식 이해

1. VEDA 입과 과정

  • 부트텐트에서 한화비전 VEDA 과정 발견!
  • VEDA 홈페이지: https://www.vedacademy.co.kr/
  • VEDA 지원자 단톡방 운영 (공지 및 질의응답, 누리집에서 카톡방 링크 찾을 수 있음)
  • 지원 절차
    • - 간단한 지원서 작성 (지원 동기)
    • - 코딩 테스트
    • - 3:3 면접 진행
  • 코딩 테스트 팁
    • - 완전 구현형 보다는 “빈칸 채우기” 스타일 문제
    • - 스택, 버블 정렬 등 기초 알고리즘을 직접 구현해 보고 가면 도움 됨
  • 지원서 유의사항
    • - 제출 후에는 다시 확인 불가 → 꼭 별도 파일로 백업해 둘 것
  • 면접 내용
    • - 자기소개, 지원 동기
    • - 지원서에 적은 프로젝트 관련 간단한 질문

2. 컴퓨터의 구조

  • 구성 요소
    • - 중앙처리장치(CPU)
    • - 메인 메모리(RAM)
    • - 보조 기억 장치(ROM, HDD, SSD 등)
    • - 입출력 기기(키보드, 모니터 등)
  • 부팅 흐름
    • - 전원 ON
    • - ROM에서 부트로더를 RAM으로 로드
    • - 기본 하드웨어/입출력 장치 점검
    • - OS 로딩 및 사용자 환경 준비
  • 터미널 명령 처리
    • - 내부 명령어(경로 변수에 있는 경로에서의 실행 파일)
    • - 외부 명령어(실행 파일)
    • - 배치 파일(.bat 등)

3. C언어 빌드 과정

  • 3단계 빌드 파이프라인
    • - 전처리: 전처리 지시자 처리, 헤더 포함, 매크로 치환 (text → text)
    • - 컴파일: 전처리된 코드를 기계어(객체 파일)로 변환
    • - 링크: 여러 객체 파일과 라이브러리, startup code를 결합해 실행 파일 생성
  • 전처리기 특징
    • - 텍스트 치환 과정
    • - #include는 “헤더 파일 내용 복붙”에 가깝다
  • 링커 개념
    • - 여러 .obj / .o 파일과 라이브러리들을 하나의 실행 파일로 묶는 단계
    • - 선언만 있고 구현이 없는 외부 함수가 있으면 링커 에러 발생

4. 컴퓨터가 프로그램을 실행하는 방법

  • 핵심 레지스터 3개
    • - EIP(Instruction Pointer): 현재 실행할 기계어 명령의 주소
    • - ESP(Stack Pointer): 현재 스택의 맨 위 주소
    • - EBP(Base Pointer): 현재 함수(스택 프레임)의 기준점 주소
  • 실행 흐름
    • - 터미널에서 실행 파일 이름 입력
    • - OS가 실행 파일을 메모리에 적재, EIP에 시작 주소 설정
    • - main 함수 호출 → 새로운 스택 프레임 생성 (EBP, ESP 갱신)
    • - printf 등 다른 함수 호출 시마다 새로운 스택 프레임 생성 및 소멸
    • - 모든 함수가 종료되면 스택이 정리되고 프로그램 종료

5. 메모리 구조와 데이터 표현

메모리 영역

영역 저장되는 값 결정 시점
레지스터 현재 실행 위치(EIP), 스택 기준점(EBP), 연산용 임시 값 실시간(CPU 내부에서 계속 변화)
스택(Stack) 지역 변수, 매개변수, 리턴 주소, 힙 주소(포인터) 함수 호출 시
힙(Heap) 동적 할당 데이터, 객체, 동적 배열 실행 중 필요할 때
스크립트(Text) 기계어로 변환된 프로그램 코드 컴파일 시

정수: 2의 보수

  • MSB를 부호 비트로 사용 (1이면 음수, -2(n-1) 역할)
  • 양수 → 음수 변환
    • - 이진수 표현 작성
    • - 모든 비트 반전
    • - 결과에 1 더하기
    • - 예) +5(0101) → 반전(1010) → +1 = 1011 → -5
  • 음수 → 양수 변환도 “반전 후 +1”로 동일

실수: 부동소수점

  • 형식: (−1)sign × 1.mantissa × 2exponent − bias
  • 구성
    • - 부호 비트(Sign): 양수(0) / 음수(1)
    • - 지수부(Exponent): 소수점 위치 결정
    • - 가수부(Mantissa): 실제 유효 숫자
  • 대표 타입
    • - float: 32비트, 약 7자리 정밀도
    • - double: 64비트, 약 15~16자리 정밀도
    • - long double: 환경에 따라 다름
  • double(64비트) 구조
    • - 부호 1비트, 지수 11비트, 가수 52비트
  • 주의사항
    • - 반올림 오차 때문에 a == b 비교는 위험
    • - fabs(a - b) < ε 형태로 비교 권장
    • - %f, %lf 등 자료형에 맞는 포맷 지정자 사용

문자 인코딩과 개행 문자

  • ASCII 계열
    • - 7비트 ASCII: 알파벳·숫자·기본 특수문자(127개)
    • - Extended ASCII: 7비트 ASCII + 추가 그래픽 문자
    • - 유럽권 인코딩: 기본 ASCII + 각 언어 문자 추가
  • 한글
    • - 완성형 한글: 19(초성) × 21(중성) × 28(종성) = 11,172자, 2바이트 사용
    • - 조합형(MS-949, EUC-KR 등): 초성·중성·종성 비트로 조합
    • - UTF-8: 가장 널리 사용, 영어 1바이트, 한글 3바이트 등 가변 길이
  • 개행 문자
    • - CR(Carriage Return): 커서를 줄 맨 앞으로
    • - LF(Line Feed): 커서를 다음 줄로
    • - 윈도우: CRLF 사용
    • - 유닉스/리눅스: LF 사용
    • - 줄바꿈 차이로 Git diff가 크게 생길 수 있음

예제

주차 예제 풀이

브라우저 환경에 따라 예제가 로딩되지 않을 수 있습니다.

문제 및 해결 과정

문제 1

Visual Studio에서 한글이 깨져서 출력됨

원인 분석

에디터는 UTF-8로 스크립트를 저장하지만, 콘솔(명령 프롬프트)은 다른 코드페이지(예: CP949, EUC-KR 계열)로 출력하기 때문에 인코딩이 맞지 않았음.

해결 방법

Visual Studio 우측 하단의 “인코딩하여 저장” 메뉴에서 인코딩을 MS-949로 맞춰 저장해야 함.

문제 2 (잠재적 문제)

윈도우와 유닉스 줄바꿈 차이로 Git에서 불필요한 변경 사항 발생

원인 분석

윈도우는 CRLF, 유닉스/리눅스는 LF를 사용하기 때문에 같은 내용이라도 줄바꿈 바이트가 달라 Git이 다른 파일로 인식함.

해결 방법

Git의 core.autocrlf 설정을 확인하고,

에디터에서 저장 시 줄바꿈 문자를 통일하도록 설정해 윈도우를 사용하더라도 개행 문자로 관리하도록 함.

진행중인 프로젝트

프로젝트명: 원신 성유물 레진 계산기

프로젝트 블로그 페이지: 추후 별도 포스트 작성 후 링크 추가 예정

깃허브 링크