본문 바로가기

Computer Science28

[컴퓨터 구조] ALU, 제어 장치 ■ 간단한 정의(1) ALU는 계산하는 장치 (2) 제어장치는 제어 신호를 발생시키고 명령어를 해석하는 장치 * 이전에 정보처리 기능사를 공부하면서 정리했었던 '명령어 처리 과정' 글에 덧붙이는 포스팅임.https://yjhdevelopdiary.tistory.com/123  [컴퓨터] 명령어 처리 과정■ 명령어 처리 [명령어실행 순서] 1. 프로그램 카운터(PC)에 저장된 주소(값)를 메모리 주소 레지스터(MAR, 번지 레지스터)에 옮긴다. 2. 명령어를 주기억장치로부터 인출(Fetch) 한다. 3. 프로그램 카yjhdevelopdiary.tistory.com■ ALU  계산을 하기 위해서는 (1) 피연산자와 (2) 수행할 연산이 필요함 (1)는 레지스터로부터 불러오고 (2)는 제어장치로부터 제어 신호.. 2024. 9. 17.
[컴퓨터 구조] 고급언어와 저급언어 ■ 고급 언어와 저급 언어· 고급 언어 : 개발자가 읽기 쓰기 편하게 만들어진 언어 (ex: C, C++, C#, Java, etc..) · 저급 언어 : 컴퓨터가 이해하고 실행하기 위해 만들어진 언어 (ex. 기계어, 어셈블리어) ■ 저급언어· 기계어: 이진수(0과 1)로 표현됨. · 어셈블리어: 사람이 그나마 이해할 수 있게 기계어를 변환한 저급 언어. (예시) 작성한 C#의 NET 프레임워크 내 JIT 컴파일러가 생성하는 어셈블리 코드를 까보면 아래와 같이 보이는 ret, mov, imul 등이 어셈블리어의 명령어이다.[레지스터]· eax: 32비트 레지스터· rbp: 스택 복귀 주소· rsp: 현재 스택 주소· edi: 목적지에 대한 주소· esi: 시작지에 대한 주소 ■ 고급언어 고급언어에서 컴.. 2024. 8. 25.
[컴퓨터 구조] 0과 1로 표현하는 문자 ■ 기존 블로그 글https://yjhdevelopdiary.tistory.com/200 [Modern C++] Unicode, MBCS, WBCS■ ASCII char는 C++에서 1바이트를 차지한다. unsinged 라면 0~255 사이의 숫자만 표현할 수 있다. 컴퓨터 출시 초기에 작업을 할 때는 미국에서 군사용 목적으로 사용되었고 이때 ASCII코드를 사용했었yjhdevelopdiary.tistory.com이전에 C++ 관련 글을 올리면서 Unicode, MBCS, WBCS, ASCII, ANSI에 대해서 간략하게 글을 작성하였었다. https://yjhdevelopdiary.tistory.com/119 [전자계산] 자료 표현 방식■ 외부적 표현 방식 code로 표시하여 사람이 이해할 수 있도록 .. 2024. 8. 25.
[컴퓨터 구조] 0과 1로 표현하는 숫자 ■ 정보 단위(1) 비트 (Bit)0(False)과 1(True)을 표현하는 가장 작은 정보 단위 * 2Bit로 표현할 수 있는 정보는 2^2 = 4로 총 네 가지 (00, 01, 10, 11) 가 있다. * 즉, n Bit로 표현할 수 있는 정보는 2^n이다.[확장된 표현]단위크기1 Byte8 Bit1 KB1,000 Bytes1 MB1,000 KB1 GB1,000 MB1 TB1,000 GB* 과거에는 메모리가 크지 않아, 실질적으로 1,024개씩 데이터를 나누더라도, 표현을 1,000개씩 묶은 단위로 MB, KB 등을 사용 했으나, 요즘과 같은 빅데이터 시대에선 24개의 차이가 물리적으로 커지다보니 Kib, GiB와 같이 1,024개로 정확히 구분지어 사용하는 추세이다.단위크기1 Byte8 Bit1 K.. 2024. 8. 25.
[컴퓨터 구조] 핵심 부품, 시스템 버스 ■ 컴퓨터의 큰 구조* 네 가지 핵심 부품: CPU, 메모리, 보조기억장치, 입출력장치 ■ 메모리 · 현재 실행되는 프로그램[프로세스]의 명령어와 데이터를 저장하는 부품 · 프로그램이 실행되기 위해선 메모리에 적재되어야 한다. · 내가 필요로 하고 있는 명령어와 데이터가 어느 위치에 있는 지를 가리키는 '주소(Address)'의 정보 또한 갖고 있다. · 이러한 명령어와 데이터들은 모두 컴퓨터가 읽을 수 있는 '0'과 '1'로 기록되어 있다. ■ CPU · CPU는 메모리에 저장된 값을 읽어 들이고, 해석하고, 실행하는 장치이다 · CPU 내부에는 ALU, 레지스터, 제어 장치가 있다. · ALU는 계산하는 장치 · 레지스터는 임시 저장 장치 · 제어장치는 제어 신호를 발생시키고 명령어를 해석하는 장치■.. 2024. 8. 25.
[자료구조] 이진탐색트리 (Binary Search Tree) ■ 이진 탐색 (Binary Search) 우리가 보통 벡터나 연결리스트를 활용하여 원하는 요소가 있는지 찾기 위해 순회를 할 경우 O(n)의 시간 복잡도를 갖고 전체를 둘러봐야한다. 하지만 정렬이 되어있는 상태라면 이렇게 할 필요 없이 이진 탐색을 해주면 된다. 이진 탐색이란 중간 요소를 기점으로 탐색할 값이 해당 요소보다 클 경우 우측을, 작을 경우 좌측을 탐색해주는 것인데 이를 찾을 때까지 [or 탐색 대상이 하나로 줄어들 때까지] 무한 반복 해주는 것이다. 반씩 쪼개서 탐색하므로 O(logN)의 시간 복잡도를 갖고 있으며 이는 일반적으로 전체를 순회하는 O(n)보다 좋은 성능을 의미한다. ■ 이진 탐색 트리 (BST; Binary Search Tree) [이론] 이진탐색트리는 이진트리의 구조를 띄.. 2024. 3. 29.
[Algorithm] A* 알고리즘 ■ 들어가기 전 BFS의 두 가지 문제 중 가장 먼저 발견한 노드들을 방문한다는 한계점을 보완하기 위해 (1) 가중치 그래프(Weighted Graph)와 (2) 우선순위큐 (Priority Queue)를 사용한 다익스트라(Dijikstra) 알고리즘이 탄생했다. https://yjhdevelopdiary.tistory.com/196 [Algorithm] 다익스트라(Dijikstra) 알고리즘 ■ 배경 그래프의 탐색 알고리즘 중 BFS가 가볍고 구현하기 쉽다는 것을 알 수 있었다. 하지만 BFS의 단점은 아래 두 가지의 단점이 있다. (1) 목적지를 모른다. 그러므로 접근 가능한 모든 정점을 yjhdevelopdiary.tistory.com 하지만 다익스트라도 또 다른 BFS의 한계점은 보완하지 못했는데.. 2024. 3. 29.
[Algorithm] 다익스트라(Dijikstra) 알고리즘 ■ 배경 그래프의 탐색 알고리즘 중 BFS가 가볍고 구현하기 쉽다는 것을 알 수 있었다. 하지만 BFS의 단점은 아래 두 가지의 단점이 있다. (1) 목적지를 모른다. 그러므로 접근 가능한 모든 정점을 탐색한다. (2) 가장 먼저 발견한(Discovered) 정점들을 방문 예약한다. 다익스트라 알고리즘은 위에서 (2) 문제를 해결하기 위해 고안된 알고리즘이다. ■ 특징 먼저 가중치 그래프를 활용하고 일반적인 큐(Queue)를 사용하는 BFS와 달리 우선순위 큐(Priority Queue)를 사용한다. (+)===== 우선 순위 큐는 아래 포스팅에 서술 및 구현해봤었다. https://yjhdevelopdiary.tistory.com/193 [자료구조] 우선 순위 큐 (Priority Queue) ■ 이론.. 2024. 3. 25.
[Algorithm] BFS, DFS ■ 탐색 알고리즘 BFS, DFS는 그래프를 탐색할 때 사용하는 대표적인 탐색 알고리즘이다. 그래프는 이전 포스팅에서 정리해봤다. https://yjhdevelopdiary.tistory.com/194 [자료구조] 그래프 (Graph) ■ 의의 현실 세계의 사물이나 추상적인 개념 간의 '연결 관계'를 표현 트리와 굉장히 유사한데 트리보다 약간 넓은 개념으로 보면 됨. 트리가 약간 그래프의 일종이라고 보는게 좀 더 정확할듯. yjhdevelopdiary.tistory.com ■ DFS (깊이 우선 탐색; Depth First Search) 시작점 기준 뎁스 가장 끝 부분까지 깊이 파고들어서 정보를 추출해주는 알고리즘이다. 막다른 길을 만날 때 까지 뎁스를 늘려 계속 파고드는 원리이다. [구현 방법] (1).. 2024. 3. 25.