1. 시프트 연산1) 시프트 연산이란• 2의 거듭제곱수를 곱셈/나눗셈 연산할 때 사용• 기호: >(오른쪽 시프트)• 다음과 같은 경우 결과값을 장담할 수 없음- y가 음수일 때- y가 x의 타입의 비트 수보다 크거나 같을 때• Logical Shift: 단순히 비트를 옮기는 것으로 피연산자의 부호는 신경 쓰지 않음• Arithmetic Shift: 피연산자의 부호를 유지하며 오른쪽으로 쉬프트할 때 빈 비트를 0이 아닌 부호 비트로 채움(1) 2) 비트 연산자• ~ 비트 NOT: 비트를 반전 (1 → 0, 0 → 1)• & 비트 AND: 대응되는 비트가 모두 1이면 1 반환• | 비트 OR: 대응되는 비트 중 하나라도 1이면 1 반환• ^ 비트 XOR: 대응되는 비트가 서로 다르면 1 반환• • >> 오른..
CS
1. 연산기 개념1) 연산기란?• 데이터를 처리하고 연산하는 장치• 주로 산술, 논리, 비교, 이동 등의 연산을 수행하여 프로그램의 실행과 데이터 처리를 담당• 일반적으로 중앙 처리 장치(Central Processing Unit, CPU)의 핵심 구성 요소 중 하나로 작동• CPU는 명령어를 해독하고 실행하며, 이 과정에서 연산기는 데이터를 읽어들여 필요한 연산을 수행 다양한 종류의 연산 수행• 산술 연산: 숫자와 관련된 연산(덧셈, 뺄셈, 곱셈, 나눗셈 등)• 논리 연산: 참과 거짓에 대한 논리적 연산(AND, OR, NOT 등)• 비교 연산: 두 값이 같은지, 크기를 비교하는지 등을 판단하는 연산 레지스터(Register)• 매우 빠른 속도로 데이터에 접근할 수 있는 저장 공간• 연산기는 레지스터에..
1. 스레드 이진 트리1) 이진 트리의 연결 리스트 표현• 노드의 구성: 노드들은 데이터 필드와 링크 필드를 가짐.• NULL 링크 문제: 특정 노드가 자식 노드가 없으면 링크 필드는 NULL이 저장됨. 링크 개수 비교:• n개의 노드로 구성된 이진 트리의 총 링크 개수: 2n개• 실제 사용되는 링크 개수: n-1개• 사용되지 않는 NULL 링크 개수: n+1개 2) 스레드 이진 트리(Thread Binary Tree)개념:• NULL 링크를 다른 노드를 가리키는 포인터로 설정한 이진 트리.• 자식 노드가 없는 경우, NULL 대신 순회 순서상의 다른 노드를 가리키도록 설정. 스레드(Thread)의 역할:• 트리의 다른 노드를 가리키는 포인터 역할 수행.• 트리 순회 정보를 유지하는 용도로 활용.• 순회..
1. 이진 트리의 순회 방법1) 트리 순회 (Tree Traversal)• 트리를 구성하는 모든 노드를 특정 순서대로 한 번씩 방문하는 과정• 모든 노드를 중복 없이 방문하여 데이터를 목적에 맞게 처리• 선형 자료구조는 순차적으로 저장되므로 순회 방법이 단순하지만, 트리는 다양한 순회 방식 존재• 이진 트리에서 중요한 연산 중 하나 2) 이진 트리의 순회• 기본 연산: 왼쪽 서브 트리 방문 → 루트 노드 방문 → 오른쪽 서브 트리 방문• 이진 트리의 순회 방법- 전위 순회 (Preorder Traversal)- 중위 순회 (Inorder Traversal)- 후위 순회 (Postorder Traversal) 3) 전체 트리와 서브 트리의 구조• 서브 트리는 전체 트리보다 크기만 작을 뿐 동일한 구조• 전..
1. 이진 트리의 개념과 구조1) 트리• 일반 트리와 이진 트리로 구분됨. 2) 일반 트리• 각 노드의 차수가 가변적이므로 자식 노드의 개수를 예상하기 힘들고, 이를 구현하려면 기억 공간 면에서도 비효율적임. 3) 이진 트리• 트리의 노드 구조를 일정하게 정의하여 트리의 구현과 연산이 쉽도록 정의한 트리.• 데이터의 구조적인 관계를 잘 반영하고 효율적인 삽입과 탐색을 가능하게 함.• 일반 트리에 비해 간단하고 효율적으로 구현 가능.• 가장 중요하면서도 자주 사용되는 트리.• 다양한 탐색 트리(search tree), 히프(heap) 자료구조, 컴파일러의 수식을 위한 구문 트리(syntax tree) 등의 기본이 되는 자료구조.• 광범위하게 응용됨. 일반 트리와의 차이점• 공백 이진 트리 존재.• 서브 트..
1. 트리의 개념트리의 특성• 선형 자료구조: 배열, 리스트, 스택, 큐 등• 트리(tree): 데이터를 계층적으로 저장하는 자료구조 트리의 특징• 일대다 관계 표현• 그래프 중에서 사이클을 포함하지 않는 연결 그래프• 데이터 탐색, 삽입, 삭제에서 선형 구조보다 효율적 트리의 예시• 가계도: 가족 구성원을 계층적으로 표현• 기업 조직도: 부서와 직급 구조 표현• 컴퓨터 디렉터리 구조: 폴더와 파일 체계 표현• 결정 트리: 인공지능에서 의사결정을 위한 트리• 운영체제 파일 시스템: 파일 저장 구조 표현• 데이터베이스: 계층적 데이터 구성 2. 트리의 용어트리의 구성 요소• 루트 노드(root node): 트리의 최상위 노드 (부모 없음)• 자식 노드(child node): 특정 노드의 하위 노드• 부모..
1. 세그먼테이션 기법1) 세그먼테이션• 가변 분할 방식을 이용한 가상 메모리 관리 기법으로, 물리 메모리를 프로세스 크기에 따라 가변적으로 나누어 사용함.• 페이징 기법과 마찬가지로 세그먼테이션 기법도 테이블을 사용하는데, 이를 세그먼테이션 테이블 또는 세그먼테이션 매핑 테이블이라고 함. 2) 세그먼테이션 테이블 (Segmentation Table)• Limit: 세그먼트의 크기를 나타냄.• Address: 물리 메모리상의 시작 주소를 나타냄.• 페이징 기법에서는 메모리를 같은 크기의 페이지 단위로 분할하기 때문에 크기 정보를 유지할 필요가 없지만, 세그먼테이션 기법에서는 프로세스 크기에 따라 • 메모리를 분할하기 때문에 크기 정보를 포함함.• 각 세그먼트가 주어진 메모리 영역을 넘어가면 안 되므로, ..
1. 가상 메모리 시스템가상 메모리• 물리 메모리 크기와 관계없이 프로세스에 큰 메모리 공간을 제공하는 기술• 운영체제는 가상 메모리를 이용하여 프로세스가 물리 메모리 크기나 위치를 신경 쓰지 않고 사용할 수 있도록 함 가상 메모리의 크기와 주소• 프로세스가 바라보는 메모리 영역과 메모리 관리자가 바라보는 메모리 영역으로 구분됨• 가상 메모리는 부족한 물리 메모리 부분을 스왑 영역으로 보충하여 운영됨 가상 메모리의 크기• 물리 메모리(실제 메모리)와 스왑 영역을 합한 크기가 가상 메모리의 전체 크기가 됨 동적 주소 변환(DAT; Dynamic Address Translation)• 프로세스가 사용하는 가상 주소를 실제 물리 주소로 변환하는 과정• 메모리 관리자는 물리 메모리를 나누고 사용자 프로세스를 배..