반응형

공부/CS 10

부동 소수점 에러란?

1. 부동 소수점 에러란? 부동 소수점 오류는 부동 소수점 산술계산의 한계로 인해 부동 소수점 계산의 수학적 결과와 실제 저장된 결과의 표현 사이의 불일치를 나타냅니다. 즉, 부동 소수점 숫자를 저장할 때 항상 약간의 반올림 오류가 발생합니다. 2. 부동 소수점 에러의 원인 반올림 오류: 부동 소수점 숫자는 유효 자릿수가 제한되어 있어 계산을 수행할 때 표현이 수용할 수 있는 숫자보다 더 많은 자릿수가 필요할 수 있습니다. 이러한 경우 사용 가능한 정밀도에 맞게 결과가 반올림됩니다. 반올림 오차는 연속적인 계산을 통해 누적되어 정밀도가 떨어지고 정확한 수학적 결과와 편차가 발생할 수 있습니다. 표현 오류: 부동 소수점 숫자는 정밀도가 유한하기 때문에 실수의 하위 집합만 나타낼 수 있습니다. 즉, 일부 값..

공부/CS 2023.06.12

동적 메모리 할당이란?

1. 동적 메모리 할당이란? 동적 메모리 할당은 프로그램이 런타임에 동적으로 메모리를 할당할 수 있도록 하는 프로그래밍 개념입니다. 이를 통해 프로그램은 컴파일 시 정의된 고정 크기 메모리 구조에만 의존하지 않고 필요에 따라 메모리를 요청하고 사용할 수 있습니다. 동적 메모리 할당은 프로그램의 메모리 요구 사항을 미리 결정할 수 없거나 프로그램 실행 중에 메모리를 할당하고 할당 해제해야 할 때 특히 유용합니다. 2. 동적 메모리 할당 작동법 메모리 할당: 프로그램은 메모리 할당 함수 중 하나를 사용하여 운영 체제에 메모리를 요청합니다. 요청된 메모리 양은 일반적으로 바이트 단위로 지정됩니다. 운영 체제는 동적 메모리 할당에 사용되는 메모리 영역인 힙에서 적절한 메모리 블록을 찾습니다. 메모리 사용량: 메..

공부/CS 2023.06.11

정적 메모리 할당이란?

1. 정적 메모리 할당이란? 정적 메모리 할당은 일반적으로 프로그램 실행이 시작되기 전인 프로그램 컴파일 단계에서 변수 및 데이터 구조에 대한 메모리를 할당하는 것을 말합니다. 정적 메모리 할당에서는 변수에 대한 메모리 크기와 위치가 컴파일 시 결정되며 프로그램 실행 내내 고정된 상태로 유지됩니다. 즉, 컴파일 시 메모리의 크기와 위치를 알 수 있으며 프로그램 실행 중에 메모리를 변경할 수 없습니다. 예를 들어 전역 변수와 정적 변수는 일반적으로 정적 메모리를 사용하여 할당됩니다. 2. 정적 메모리 할당의 특징 컴파일 시 메모리 할당: 정적으로 할당된 프로그램에서 메모리는 컴파일 프로세스 중에 변수 및 데이터 구조를 위해 예약됩니다. 컴파일러는 프로그램에 정의된 변수 유형과 크기에 따라 메모리 요구 사항..

공부/CS 2023.06.10

아스키 코드(ASCII)란?

1. 아스키 코드란? 아스키 코드(ASCII)는 미국 표준 정보 교환 코드는 영어 알파벳 문자와 몇 가지 특수 문자 및 제어 문자를 표현하는 문자 인코딩 체계입니다. ASCII는 1960년대 초에 개발되었으며 이후 가장 널리 사용되는 문자 인코딩 표준 중 하나가 되었습니다. 2. 아스키 코드의 특징 문자 매핑: ASCII는 지원하는 각 문자에 고유한 숫자 코드를 할당합니다. 코드 포인트의 범위는 0~127(또는 확장 ASCII의 경우 0~255)이며, 각 코드는 특정 문자를 나타냅니다. 예를 들어 코드 65는 대문자 'A'를, 97은 소문자 'a'를, 32는 공백 문자를 나타냅니다. 문자 집합: ASCII 문자 집합에는 제어 문자(캐리지 리턴 및 줄 바꿈 등), 숫자(0-9), 대문자(A-Z), 소문자(..

공부/CS 2023.06.05

유니코드(Unicode)란?

1. 유니코드란? 유니코드는 전 세계 대부분의 문자 체계에서 표현되는 모든 문자를 표현하는 것을 목표로 하는 범용 문자 인코딩 표준입니다. 유니코드 표준은 플랫폼, 프로그램 또는 언어에 관계없이 모든 문자에 대해 고유한 숫자 코드 포인트를 제공합니다. 이를 통해 모든 언어의 텍스트를 여러 시스템에서 일관된 방식으로 표현할 수 있습니다. 2. 유니코드의 속성 문자 인코딩: 유니코드는 문자와 해당 숫자 코드 포인트 간의 매핑을 정의합니다. 코드 포인트는 16진수로 표시되는 각 문자에 할당된 고유 값입니다. 예를 들어 코드 포인트 U+0041은 라틴 대문자 "A"를 나타냅니다. 광범위한 문자 지원: 유니코드는 다양한 문자 체계의 문자, 기호, 이모티콘, 수학 표기법, 특수 문자 등 광범위한 문자를 포괄합니다...

공부/CS 2023.06.05

스택(Stack)영역과 힙(Heap)영역의 차이점은?

컴퓨터 과학에서 스택(Stack)영역과 힙(Heap) 영역은 프로그램 데이터를 관리하는 데 사용되는 두 가지 중요한 메모리 영역입니다. 스택(Stack)영역과 힙(Heap) 영역의 주요 차이점은 프로그램에서 할당하고 사용하는 방식에 있습니다. 1. 스택(Stack) 스택은 단일 함수 또는 코드 블록 내에서 선언되고 사용되는 변수와 데이터 구조를 저장하는 데 사용되는 메모리 영역입니다. 함수가 호출되면 함수 내에서 선언된 변수가 선입선출 후입선출(LIFO) 순서로 스택에 푸시됩니다. 함수가 반환되면 스택이 팝되고 메모리가 해제됩니다. 스택은 일반적으로 함수 호출과 로컬 변수를 관리하는 데 사용됩니다. 스택은 시스템에 의해 자동으로 관리되므로 프로그래머가 스택에 메모리를 수동으로 할당하거나 해제할 필요가 없..

공부/CS 2023.03.28

컴퓨터 구조에서 캐시(Cache)는 왜 필요할까?

캐시는 자주 사용하는 데이터에 액세스하는 데 걸리는 시간을 줄여 시스템 성능 속도를 높이기 위해 컴퓨터 구조에 존재합니다. 컴퓨터는 데이터에 액세스할 때 일반적으로 메모리 또는 스토리지에서 데이터를 검색합니다. 그러나 메모리나 저장소에 액세스하는 속도는 프로세서 속도에 비해 상대적으로 느릴 수 있습니다. 캐시는 프로세서 칩 또는 프로세서와 가까운 별도의 칩에 있는 소량의 고속 메모리입니다. 캐시는 자주 사용하는 데이터의 복사본을 저장하여 프로세서가 메모리나 저장소에서 데이터를 검색할 때까지 기다릴 필요 없이 빠르게 액세스할 수 있도록 합니다. 자주 사용하는 데이터를 캐시에서 쉽게 사용할 수 있으므로 컴퓨터는 명령을 더 빠르게 실행하여 전반적인 시스템 성능을 향상시킬 수 있습니다. 캐시는 느린 메모리 또는..

공부/CS 2023.03.21

메모리 구조의 개념

메모리는 크게 1. 코드 영역, 2. 데이터 영역, 3. 스택 영역, 4. 힙 영역으로 나뉘어져 있다. 1. 코드 영역 코드 영역은 프로그램의 컴파일된(=실행할 프로그램) 기계어 코드를 저장되는 영역이다. 일반적으로 이 영역은 읽기 전용이며, 프로세서가 실행하는 명령들을 포함시킵니다. CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리하게 됩니다. 2. 데이터 영역 데이터 영역은 초기화된 데이터와, 초기화되지 않는 데이터를 포함하여 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역입니다. 아울러 초기화된 데이터는 읽기 전용 섹션에 저장되고, 초기화되지 않은 데이터는 읽기-쓰기 섹션에 저장됩니다. 또한 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸합니다. 3..

공부/CS 2023.02.11

프로그램 실행 순서와 메모리 구조

메모리 영역에 얘기하기 전, 프로그램이 어떤식으로 실행되는지 과정을 살펴 보겠습니다. 번호를 통해 프로그램의 실행 순서가 어떠한 과정으로 진행되는 지 나타내보았습니다. 프로그램이 실행되면 컴퓨터의 주 메모리(RAM)에 로드되고 일정량의 메모리 공간이 할당됩니다. 이 메모리 공간은 프로그램이 실행되는 동안 프로그램의 명령과 데이터를 저장하는 데 사용됩니다. 프로그램에 할당되는 메모리 공간의 양은 프로그램의 크기와 사용 가능한 메모리 양에 따라 달라질 수 있습니다. 예를 들어 계산기를 키는 것과, 롤을 키는 것은 프로그램의 크기가 서로 다르기 때문에 메모리 공간의 양은 이에 따라 달라집니다. 프로그램이 처음 로드될 때 운영 체제(OS)는 일반적으로 인접한 메모리 블록을 프로그램에 할당합니다. 이 메모리 블록..

공부/CS 2023.01.08

컴파일 시 작동 순서는 어떻게 되는가?

컴파일 프로세스란? 컴파일러가 사용자가 프로그래밍 언어로 작성한 소스 코드를 컴퓨터에서 실행할 수 있는 기계 코드로 변환하는 일련의 과정입니다. 기계 코드는 일반적으로 실행 파일을 생성하기 위해 다른 코드와 연결될 수 있는 실행 파일 또는 라이브러리의 형태입니다. 다음은 일반적인 컴파일 프로세스 단계입니다. 이는 기본적인 사항이며, 보다 세부 사항은 프로그래밍 언어, 대상 플랫폼 및 사용 중인 컴파일러에 따라 다를 수 있습니다. '전처리 - 어휘 분석 - 구문 분석 - 의미론적 분석 - 중간 코드 생성 - 최적화 - 코드 생성 - 연결' 전처리(Preprocessing) : 소스 코드 내부에 있는 매크로(#) 명령어를 확인하고 해당 전처리기 지시문에 지정된 작업들을 수행합니다. 어휘 분석(Lexical ..

공부/CS 2022.12.26
반응형