[컴퓨터 구조] CPU의 구조와 기능 1
·
🖥️ Computer Science/Computer Architecture
CPU의 수행하는 세부적 동작들 명령어 인출(IF) : 기억장치로부터 명령어를 읽음 명령어 해독(ID) : 수행해야 할 동작을 결정하기 위해 명령어를 해독 → 명령어 인출과 해독은 모든 명령어들에 대해 공통적으로 수행 데이터 인출(DF) : 명령어 실행을 위해 데이터가 필요한 경우, 기억장치 || I/O장치(키보드)로부터 그 데이터를 읽음 데이터 처리(DP) : 데이터에 대한 산술적 혹은 논리적 연산을 수행 데이터 저장(DS) : 수행한 결과를 저장 → 데이터 인출, 처리, 저장은 필요한 경우에만 수행 명령어를 인출 했는데, 오퍼랜드가 데이터 주소가 아닌 데이터라면 데이터 인출 과정 필요 X ++ 순서 변경할 때도 데이터 인출 필요 X CPU 기본 구조 산술논리연산장치 (ALU)산술 연산 : 사칙연산 등..
[컴퓨터 구조] 컴퓨터 시스템 개요 2
·
🖥️ Computer Science/Computer Architecture
컴퓨터 정보 : 2진수 비트들로 표현된 프로그램 코드(기계어, 어셈블리어, 고급언어)와 데이터 프로그램 언어의 번역 과정 고급 언어 → 어셈블리어 → 기계어 순으로 변환 어셈블리어와 기계어는 1대1 대응 Z = X + Y LOAD A, X : 기억장치 X번지 주소의 내용을 읽어, 레지스터 A에 적재하라 ADD A, Y : 기억장치 Y번지 주소의 내용을 읽어, 레지스터 A에 적재된 값과 더하고 결과를 A에 다시 적재하라 STOR Z, A : 그 값을 기억장치 Z번지 주소에 저장하라 (store) 어셈블러 어셈블리 프로그램을 기계어로 번역하는 SW 니모닉스 : 어셈블리 명령어가 지정하는 연산을 가리키는 알파벳 기호 ex) LOAD == 001, ADD == 010, STOR == 011.. 기계어 형식 오퍼..
[컴퓨터 구조] 컴퓨터 시스템 개요 1
·
🖥️ Computer Science/Computer Architecture
컴퓨터 시스템 개요 1 컴퓨터 기본구조 하드웨어 : 컴퓨터에서 각종 정보의 전송 통로를 제공해 주고, 정보에 대한 처리가 실제 일어나게 해주는 물리적인 실체 소프트웨어 : 정보들이 이동하는 방향과 정보 처리의 종류를 지정해주고, 그러한 동작들이 일어나는 시간을 지정해주는 명령(Command)들의 집합 CPU : 컴퓨터의 특성을 결정하며, 컴퓨터의 핵심 기능인 프로그램 실행과 데이터 처리를 담당함 특징 ‘프로세서’ 또는 ‘마이크로 프로세서’라고도 부름 산술 논리 연산 장치(ALU) : 산술, 논리, 보수, 시프트 연산을 수행하는 공간 제어장치(CU) : 명령어를 해독하여 명령어 실행에 필요한 제어 신호를 발생 시키고, 컴퓨터의 모든 장치를 제어 레지스터(register) : CPU 내부의 임시기억장치로, ..
[백준] 2644, 촌수계산(C++, BFS)
·
🖥️ Computer Science/Algorithm
BFS 기초 문제 풀어보기 https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net 2644번 : 촌수계산 * 입출력 예시 // 입력 9 7 3 7 1 2 1 3 2 7 2 8 2 9 4 5 4 6 // 출력 3 8과 6일땐 ? => 8에서 6을 못 감 => -1 출력 #include #include #include #include #include #include #include using namespace std; #define M..
앱 개발 프로젝트에서 배운 점(4) : 프래그먼트 간의 데이터 전달
·
🎸 기타/AOS, Kotlin
이번 프로젝트에서 제일로 어려웠던 부분이다. 상황은 이렇다. 메인 액티비티 레이아웃에 가이드라인 8 : 2로 LinearLayout 8, Start 이미지 2로 잡았다. LinearLayout에는 weightSum=10으로 하여 텍스트뷰 0.5, 프래그먼트_1_1은 7, 프래그먼트_2_1은 2.5 이렇게 weight를 주어 레이아웃을 형성했다. 메인 액티비티는 시작화면이다. 1_1과 2_1 프래그먼트에서 값을 설정한 뒤, Start 버튼을 눌렀을 때 이 데이터들이 1_2와 2_2 프래그먼트로 이동해야 한다. Start.setOnClick 리스너를 사용하면 정보 전달이 쉽게 가능하나, 이미 Start 온클릭 리스너는 프래그먼트의 변경하는 역할을 메인 액티비티에서 하고 있음. 데이터 전달까지 Start 이미..
앱 개발 프로젝트에서 배운 점(3) : TextView 배열의 원소 증감 처리 및 메인 액티비티로 넘겨주기
·
🎸 기타/AOS, Kotlin
순서대로 레이아웃에 아래의 id로 저장되어 있다. image0 number0 image1 image2 number1 image3 image4 number2 image5 image6 number3 image7 프래그먼트간의 데이터를 주고받을 때, EditView 4개도 주고받아야 한다. 그래서 레이아웃의 EditVew id 하나하나당 총 4번으로 데이터를 넘겨주려 했는데, 코드의 가독성이 매우 낮아질 거 같아서 찾아보니 Textview 배열에 담아줄 수 있었다. 레이아웃에서 EditText 뷰의 아이디를 통일시켜준다. Textview 배열과 ImageView 배열 초기화 이미지에 따른 텍스트뷰 증감 처리 레이아웃에서 EditText 뷰의 아이디를 통일 Textview 배열과 ImageView 배열 초기화 ..
앱 개발 프로젝트에서 배운 점(2) : Spinner 아이템 글자크기 및 폰트, 정렬 다루는 방법
·
🎸 기타/AOS, Kotlin
Spinner 아이템 글자크기 및 폰트, 정렬 다루는 방법 스피너란, 이처럼 클릭을 했을 때 여러가지 목록을 뜨게 하는 기능이다. res - values - array.xml 을 만들어 그 안에 태그로 클릭했을 때 뜰 목록들을 지정할 수 있다. 그러고 kt 파일에서 이 array 이름을 호출해주면 된다. 스피너를 클릭했을 때 메소드 2개 오버라이딩 sound_spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { override fun onItemSelected(p0: AdapterView?, p1: View?, p2: Int, p3: Long) { set_music = p2 } override fun onNothing..
앱 개발 프로젝트에서 배운 점(1) : 레이아웃, 프래그먼트, 뷰
·
🎸 기타/AOS, Kotlin
레이아웃 LinearLayout과 FrameLayout의 차이점 LinearLayout android:orientation 속성을 통해 자식 뷰들을 수직 or 수평 방향으로 순차적으로 배치한다. android:weight 속성을 통해 상대적인 가중치로 공간을 동적으로 할당가능 주로 여러 개의 자식 뷰나 뷰 그룹을 나열할 때 사용됨 이번 프로젝트에서는 LinearLayout으로, 가이드라인에 의해 80%만큼 하나를 만들고, weightSum = 10으로 주어 0.5만큼 텍스트뷰를, 7만큼 프래그먼트를, 2.5만큼 또 다른 프래그먼트를 띄우게 했다. FrameLayout 자식 뷰들을 상위 좌표에 겹치기 배치한다. 즉, 여러 자식 뷰가 추가되면 그 뷰들은 이전 뷰의 위에 배치된다. 단일 뷰나 뷰 그룹을 전체 ..
[백준] 13414, 수강신청 (C++, 해시맵)
·
🖥️ Computer Science/Algorithm
https://www.acmicpc.net/problem/13414 13414번: 수강신청 입력 데이터는 표준 입력을 사용한다. 입력은 1개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 과목의 수강 가능 인원 K(1 ≤ K ≤ 100,000)와 학생들이 버튼을 클릭한 순서를 기록한 대기목 www.acmicpc.net 이번 주 스터디는 내 차례가 되어 조금 더 깊게 이 문제에 대해 공부해봤고, 이 문제를 풀어봄으로써 C++의 STL에 대해 조금 더 알게되었다. #include #include #include #include #include using namespace std; // sort, unordered_map(해시맵), pair, auto, iterator bool compare(const ..
[코틀린] 코틀린의 '람다'(Lamda) 살펴보기
·
🎸 기타/AOS, Kotlin
이번 글을 적기에 앞서 살펴볼 내용은 다음과 같다. 1. 람다 (Lamda) 2. 데이터 클래스 3. Companion Object 4. Object Lamda (람다) 1. 람다 식은 마치 우리가 value처럼 다룰 수 있는 익명 함수이다. + 간결한 함수 표현 방식 2. 함수를 선언하지 않고도, 코드 내에서 함수를 정의하고 사용할 수 있게 해준다. 3. 메소드의 파라미터로 넘겨줄 수 있다. ex) fun maxBy(a:Int) => a : Int를 적은 파라미터 자리에 Fun을 넣을 수 있음. 4. return 값으로도 사용할 수 있다. 람다의 기본 형태 정의 val lamdaName : Type = {argumentList -> codeBody} val sum: (Int, Int) -> Int = ..