[자료구조] #9 Linked Stack & Queue
·
CS/자료구조
• 포인터 프로그래밍에서 메모리의 특정 위치를 가리키는 변수이다. 포인터는 Linked representation으로 사용된다. Linked representation은 데이터를 연결된 노드의 집합으로 나타내는 방법이다. 각 노드는 데이터를 저장하는 부분과 다음 노드를 가리키는 포인터로 구성된다. 변수는 dot 연산자( . ), 포인터는 화살표 연산자( - > )를 통해 접근한다. • Self-referential Class(자기 참조 클래스) 동일한 클래스 유형의 다른 객체를 가리키는 포인터를 멤버 변수로 포함하는 클래스이다. link라는 포인터에다가 Node라는 주소값을 넣어주면 그 Node를 가리킨다 라고 생각하면 쉽다. • Pros & Cons (vs 배열) 장점 중간에 아이템 삽입이 용이하다. ..
[컴퓨터구조] #7 ISA(3)
·
CS/컴퓨터구조
• 명령어의 표현 한 명령어당 32-bit word (=4 byte) 로 인코딩 되어있다. • RISC-Ⅴ Instruction Formats 6가지 형태가 있다. R-type을 보면 rd = 5, rs1 = 5, rs2 = 5 bit가 할당된 것을 확인할 수 있다.경우의 수는 2⁵ = 32가지인데 왜 32개보다 더 늘리지 않는 것일까? 만약 33가지로 늘리게 되면 각각 1 bit씩 늘어나야 한다.결국 opcode나 funct7에서 명령어를 더 많이 배치하지 못하는 문제가 생긴다.따라서 일반적으로 사용하는 레지스터의 개수는 32개로 고정되어 있다.  • R-Type Instructions 프로세서가 opcode(0110011)을 통해 레지스터 3개를 사용하는 R-typ..
[컴퓨터구조] #6 ISA(2)
·
CS/컴퓨터구조
• RISC-Ⅴ: Control Transfer Operations 프로그램에서 가장 많이 사용되는 기능에는 '조건 검사'가 있다. 조건부 명령어 : Branch무조건 분기 명령어 : Jump분기 타겟 (주소) : Label • Conditional Operation(조건부 명령어) 조건이 참이면, label로 분기된다.참이 아니면, 다음 명령어 (PC + 4)를 수행한다. beq : 같으면 L1으로 분기해라. bne : 같지 않으면 L1으로 분기해라. blt : 참이면 L1으로 분기해라. bge : 참이면 L1으로 분기해라. • Signed vs Unsigned Comparison Signed comparison : blt(a=b)Unsigned com..
[컴퓨터구조] #5 ISA(1)
·
CS/컴퓨터구조
• 프로그래밍 언어의 두가지 분류 High-level Languages컴파일러를 지원하기 때문에 하드웨어 독립적이다.하나의 문장이 여러 명령어를 포함한다.ex) C, C++, Java, Python Low-level Languages특정 아키텍처에서 볼 수 있기 때문에 하드웨어 종속적이다.하나의 문장이 기계어 하나로 대응되는 경우가 많다.ex) Assembly languages for x86, ARM, RISC-Ⅴ  • Assembly Language vs Machine Language  Assembly Language 기계어에 대한 표현이다. 하나의 문장이 하나의 기계어에 대응한다.High-level 프로그램과 기계어 코드 사이의 Abstraction layer이다.    Machine Language..
[자료구조] #8 Queue(2)
·
CS/자료구조
• STL Queue STL Queue의 API는 다음과 같다. #include std :: queue name; // Queue 선언 void name.push(data_type x); // enqueue data_type name.front(); // peek void name.pop(); // dequeue int name.size(); bool name.empty(); • 미로 탐색 문제 문제 정의 Input : 2차원 배열의 미로 Output : 성공 or 실패 즉 s에서 t로 갈 수 있냐는 문제이다. 길찾기 방법 DFS(Depth First Search) : 깊이 우선 탐색 - 스택 기반 동작 BFS(Breadth First Search) : 넓이 우선 탐색 - 큐 기반 동작 주의할 점 갔던 ..
[객체지향프로그래밍] #4 클래스와 객체
·
CS/객체지향프로그래밍
생성자는 객체가 생성될 때 객체의 초기화를 위해 실행되는 메소드이다. • 생성자의 특징생성자의 이름은 클래스 이름과 동일하다.public class Circle { public Circle(int r, String n) { ... } // 생성자}생성자는 여러개 작성(오버로딩)할 수 있다.public class Circle { public Circle() {...} // 매개 변수가 없는 생성자 public Circle(int r, String n) {...} // 2개의 매개 변수를 가진 생성자}생성자는 new를 통해 객체를 생성할 때 한번만 호출된다.Circle pizza = new Circle(10, "자바피자"); // 생성자 Circle(int r, String n)Circle d..
[자료구조] #7 Queue(1)
·
CS/자료구조
• Queue 큐는 '대기열'을 뜻한다. 큐의 가장 큰 특징은 'FIFO'(First In, Firtst Out) 이다. 먼저 온 순서대로 결제하는 계산대를 생각하면 쉽다. 큐의 구조 front(앞단) & rear(끝단) 주요 연산자 Enqueue(인큐) : 큐의 끝단에 아이템을 삽입한다. Dequeue(디큐) : 큐의 앞단에서 아이템을 제거한다. • 부가 연산자 empty() : 큐가 비어있으면 true를 반환한다. 그렇지 않으면 false. full() : 큐가 가득차면 true를 반환한다. 그렇지 않으면 false. peek() : 맨 앞단에 있는 아이템의 값을 반환한다.(삭제하지는 않는다.) size() : 큐에 있는 원소의 개수를 반환한다. • 배열로 구현한 Queue 몇번의 연산 이후에 앞단에..
[컴퓨터구조] #4 부동소수점
·
CS/컴퓨터구조
• 소수점 이하를 표현하는 방법 고정소수점(Fixed-Point)소수점 위치가 고정되어 있다.1101101.00010001Integer(정수).Fractional(소수) 특정 비트수를 기준으로 소수점이 찍힌 것을 알 수 있다. 부동소수점(Floating-Point)1.1011010001001 * 2⁶ 1(leading 1)의 오른쪽에 소수점이 위치하고, Exponent가 사용된 것을 알 수 있다.   • 고정소수점정수부 4비트, 소수부 3비트를 사용하는 고정소수점 표현01101100110.110= 2² + 2¹ + 2⁻¹ + 2⁻² = 6.75 Binary point는 비트표현에 들어가는 것이 아닌, 일종의 약속이다.  음수 소수는 두가지 방법으로 표현할 수 있다.1. 부호/크기 표현법2. 2의 보수 표..
[자료구조] #6 Stack(2)
·
CS/자료구조
• STL Vector 우선 STL이란 Standard Template Library(표준 템플릿 라이브러리)의 약자이다. C++ 언어로 프로그래밍 하는데 필요한 자료구조와 알고리즘을 제공해준다. Vector는 STL의 컨테이너 중 하나로, 동적 배열을 나타낸다. Vector의 연산은 다음과 같다.#include std :: vector name; // vector 선언 std :: vector name(size); name.size() // std::vector의 요수 수 반환 name.empty() // name이 비어있는지 확인 name.push_back() // name 끝에 요소 추가 name.pop_back() // name 끝에 있는 요소 제거 • STL Stack 용량 제한이 없고 템플릿 ..
[객체지향프로그래밍] #3 배열
·
CS/객체지향프로그래밍
• 배열이란?인덱스와 인덱스에 대응하는 데이터들로 이루어진 자료 구조를 말한다. 배열을 이용하면 한 번에 많은 메모리 공간 할당이 가능하다. • 배열 선언 및 생성자바에서 배열의 생성은 다음 두 단계로 이루어진다.배열에 대한 레퍼런스 변수 선언int intArray []; // int [] intArray;도 가능char charArray []; // char [] charArray;도 가능배열 생성 - 배열의 저장 공간 할당intArray = new int[10]; // int intArray = new int[10];도 가능charArray = new char[20]; // char charArray = new char[20];도 가능 배열의 생성과 선언을 동시에 할 수도 있다.int intArray..