본문 바로가기

2학년 2학기213

5.4 Timing and control IR(Instruction Register): 현재 CPU가 실행할 명령어를 저장한다. 3x8 decoder + I: Opcode, 메모리 참조 명령어를 사용할지, 레지스터 참조 명령어를 참조할지, I / O 명령어를 사용할지를 결정 4x16 decoder: 명령어를 순차적으로 실행하기 위해 클럭과 연결된 시퀀스 카운터를 사용해서 제어 신호를 생성한다. Control Logic Gates: 디코더에서 나온 신호를 기반으로 제어 논리가 구성되어 CPU 내부 작업 흐름을 제어하는 신호를 생성한다. Timing   클럭 신호(Clock Signal)와 타이밍 신호(Timing Signal) 간의 관계  여기서 중요한 것은 실제 데이터 전송은 클럭이 상승하는 순간 발생한다. 클럭의 신호는 주기적으로 변경되는데,.. 2024. 10. 27.
5.3 Computer Instructions Instructions format의 3가지 형태 1. Memory-reference instruction (메모리 참조 명령어)Opcode명령어가 어떤 연산을 수행할지를 나타낸다. 000 ~ 110까지 작성가능하다.I명령어가 직접 주소 지정 방식(I=0)인지, 간접 주소 방식(I=1)인지를 나타낸다. Address명령어가 참조하는 메모리의 주소를 나타낸다. 사용 예시: 메모리에서 데이터를 읽어오는 연산이나 메모리에 데이터를 저장하는 연산을 하는 것  2. Register-reference instruction (레지스터 참조 명령어)Opcode111로 고정되어 있으며 I에 의해서 레지스터 참조 명령(I=0)인지, 입출력 명령(I=1)인지가 결정된다. I레지스터 참조 명령(I=0)인지, 입출력 명령(I=.. 2024. 10. 27.
5.2 Computer registers [Regiters]: 각각의 특수한 기능을 하는 레지스터를 지정을 해놓은 방식이다.    [위 레지스터들을 갖는 기본 컴퓨터에서의 데이터 이동 방식 - Bus system]   LD(Load), INR(Increment), CLR(Clear)를 갖는 레지스터해당 레지스터(AR, PC, DR, AC, TR)는 우리가 앞에서 배웠던 병렬 로드 카운터 레지스터를 12bit로 구현한 것이다.     LD(Load)를 갖는 레지스터해당 레지스터(IR, OUTR)는 우리가 앞에서 배웠던 병렬 로드 레지스터를 12bit 또는 8bit로 구성한 것이다.   레지스터를 선택하는 방식S2SSRegister000 001AR010PC011DR100AC101IR110TR111Memory  레지스터는 Select에 의해서 레지스.. 2024. 10. 27.
5.1 Instruction codes micro operation(마이크로 연산)들이 모여서 instructions이 되고, 그 instructions이 모여서 프르그램이 된다. ❓ Instruction이란?: CPU가 프로그램에서 수행해야 할 구체적인 작업을 정의하는 기본 명령어이다. 인스트럭션은 연산 코드와 피연산자로 이루어지며, 이를 통해 CPU가 데이터를 처리하고 명령을 수행하게 된다.  Instruction의 기본 포멧즉  instruction은 명령어의 종류와 피연산자의 주소로 이루어져있고, 각각 4bit, 12bit로 이루어져있다. 그리고 피연산자의 값은 16 bit로 이루어져있다.    memory의 구조 메모리의 사이즈는 16bit이고, 메모리 전체의 주소는 instruction의 Adress에 의해서 결정된다. instru.. 2024. 10. 27.
8장 함수 1. 함수의 정의    2. 지역변수와 전역변수: 함수 안에서 정의되는 변수는 지역 변수라고 부르고, 해당 함수 안에서 만 사용이 가능하다. 반면에 함수의 외부에서 선언되는 변수는 전역 변수라고 불린다. 함수의 매개변수는 지역 변수일까?맞다! 다만 초기값은 인자로 받는 다는 점에서만 다르고 나머지는 지역 변수의 특징과 같다.  지역 변수전역 변수기본 초기값쓰레기 값0동시에 존재할 경우{ } 내부에서는 지역 변수가 우선이다. { } 외부에서는 전역 변수가 우선이다.   3. 정적 지역 변수: 블록에서만 사용되지만 블록을 벗어나도 자동으로 삭제되지 않는 변수 / 앞에 static을 붙인다. : 함수가 여러번 선언되어도 새로 초기화하지 않고 호출된 이후 연산된 값을 유지한다. : 정적 지역변수는 함수내부에서만.. 2024. 10. 25.
7장 배열 1. 중간 점검 퀴즈(1)Quiz 1) n개의 요소를 가지는 배열의 경우, 첫 번째 요소의 번호는 무엇인가?: 0 Quiz 2) n개의 요소를 가지는 배열의 경우, 마지막 요소의 번호는 무엇인가?: n - 1 Quiz 3) 범위를 벗어나는 인덱스를 사용하면 어떻게 되는가? 즉, int a[10];과 같이 선언된 배열이 있는 경우, a[10]에 6을 대입하면 어떻게 되는가?: 배열 인덱스 범위 초과 오류가 생긴다.   2. 중간 점검 퀴즈(2)Quiz 1) 배열 a[6]의 요소를 1, 2, 3, 4, 5, 6으로 초기화int a[6] = {1, 2, 3, 4, 5, 6};  Quiz 2) 배열의 초기화에서 초기값이 배열 요소의 개수보다 적은 경우: 배열 요소보다 초기화 값이 적으면 나머지 요소는 0으로 초.. 2024. 10. 25.
6장 1. 종이접기#include #include #include int main(){ double height = 0.001; int count = 0; while(height   2. 디지털 시계#include #include #include int main() { int hour, min ,sec; hour = min = sec = 0; while(1){ system("cls"); printf("%02d: %02d: %02d", hour, min, sec); sec++; if(sec == 60) { min++; sec = 0; } if(min == 60) { .. 2024. 10. 25.
5장 조건문 1. 논리 연산자연산의미x && yx와 y가 모두 참이면 참, 그렇지 않으면 거짓x || yx나 y중에서 하나만 참이면 참, 모두 거짓이면 거짓!xx가 참이면 거짓, x가 거짓이면 참 중요한 것!C언어에서는 0을 제외한 나머지 값은 모두 참으로 간주한다. 따라서, -1도 참이 되고, 100도 참이 된다.  2. 단축 연산자AND 연산자의 경우, 여러 개의 피연산자 중에서 처음 피연산자의 값이 거짓이면 다른 연산자들의 값은 계산되지 않는다.if((2>3)&&(++x (++x 3)이 거짓이기 때문에!  3. if문에서 주의할 점if (score >= 90) printf("합격!"); printf("장학금!"); 이렇게 하면 아래의 장학금 출력문은 아무런 조건 없이 출력된다.  if( x > 0).. 2024. 10. 24.
4장 수식과 연산자 1. 나눗셈 연산자정수형 / 정수형 == 정수형(소수점 이하의 값은 버려진다.)#include int main() { int a = 10; int b = 3; int result = a / b; // 정수끼리 나누기, 소수점 이하 값은 버려짐 printf("정수형 나눗셈: %d\n", result); // 출력: 3 return 0;} 실수형 / 실수형 == 실수형#include int main() { float a = 10.0; float b = 3.0; float result = a / b; // 실수끼리 나누기 printf("실수형 나눗셈: %.2f\n", result); // 출력: 3.33 return 0;}   2. 증감 연산.. 2024. 10. 23.
3장 변수와 자료형 1. 변수 1. 변수의 정의: 변수란, 프로그램에서 값들이 저장되는 공간을 변수라고 한다.  2. 변수의 선언: 변수는 반드시 사용하기 전에 미리 선언을 해야한다.자료형 변수이름 = 초기값;int num = 0;char alpha = 'a';  3. 변수의 명명법 ★★★알파벳 문자와 숫자, 밑줄 문자로 이루어진다.이름의 중간에 공백이 들어가면 안된다.첫 번째 문자는 반드시 알파벳 또는 밑줄 문자이어야한다. (숫자를 첫 번째 문자로 사용은 불가능) 대문자와 소문자를 구분하여 서로 다른 것으로 취급한다. 따라서, 변수 index와 Index, INDEX는 서로 다른 변수이다.C언어에서 사용하고 있는 키워드(예약어)와 똑같은 이름은 허용되지 않는다. 4. 변수의 초기화변수를 초기화시키지 않으면?☞ 변수가 어디.. 2024. 10. 23.
2장 기초사항 보호되어 있는 글 입니다. 2024. 10. 23.
ch1 중요 문제 유형 2024. 10. 17.
데이터 프레임 필터링 방식 1. 기본적인 열 선택df[]는 기본적으로 열을 선택할 때 사용됩니다.# 하나의 열 선택df['column_name']# 여러 열 선택df[['column1', 'column2']]  2. loc[]: 명시적 인덱스 및 열 이름 사용 행 선택# 특정 인덱스(행) 선택df.loc[2012] # 2012년 데이터 선택 열 선택# 특정 열 선택df.loc[:, 'column_name'] # 모든 행에서 'column_name' 열만 선택 행과 열 동시 선택# 특정 인덱스와 열 동시 선택df.loc[2012, 'column_name'] # 2012년의 'column_name' 데이터를 선택 조건을 활용한 필터링# 조건을 활용하여 필터링df.loc[df['state/region'] == 'GA'] # 's.. 2024. 10. 17.
ch3 중요 문제 유형 10진수 -567에 대해서 (a) 부호 절대값 표현(b) 부호화된 1의 보수표현(c) 부호화된 2의 보수표현(d)2의 보수 표현을 이용하고 12비트를 사용할 떄 10진수의 최대 최소, 2진수의 최대 최소값을 찾으시오. 2024. 10. 16.
Quiz Session 2 - 15 왜 A0를 Serial input Left에 연결하고, A3를  Serial input Right에 연결을 할까? [Shift Left]| A₆ | A₅ | A₄ | A₃ | | A₂ | A₁ | A₀ | S(left) | [R2] [R1] 우선 Serial input의 개념에 대해서 알아야한다. Serial input이란 빈자리를 채우기 위함이다. 즉, 위의 레지스터에서 ShiftLeft를 통해서 기존의 A₀ 자리에 빈자리가 생겼다. 따라서, 이 빈자리를 Serial input채우는데, 보통 첫 레지스터의 가장 오른쪽 값이 연결된다. 따라서,  A₀ 를 연결해줄 수 있다.   [Shift Ri.. 2024. 10. 16.
[pandas] Combining Datasets 데이터를 사용하다보면 최신화된 데이터를 추가하거나 다른 데이터를 기존 데이터와 합치는 일이 많다. 이런 경우 pandas에서는 데이터 추가하는 여러 연산 메서드를 지원한다.  concat과 merge를 사용할 수 있는데, concat은 주로 행 추가 또는 열 추가를 결합하는데 사용된다. 또한, merge는 두 데이터 프레임을 공통 열 또는 공통 인덱스를 기준으로 결합한다.  concat: 주로 행 추가 또는 열추가를 결합하는데 사용하는 연산 메소드이다. 기본 값은 행 추가이며, axis='col'(2.2.2에서는 axis=1)을 하면 열 추가도 가능하다.  행 추가  열 추가   만약 인덱스가 중복되는 경우라면? concat은 index 중복여부를 검사하지 않는다. 이런 경우 verify_integrit.. 2024. 10. 16.
[pandas] Hierarchical Indexing(계층적 인덱싱) Hierarchical Indexing(계층적 인덱싱)은 여러개의 인덱스 또는 열을 가질 수 있는 기능이다.  이런 식으로 상위 계층에 a, b가 있고 하위 계층에 1, 2가 있는 인덱싱을 말한다. 이런 계층이 있는 인덱스를 다중 인덱스 (MultiIndex)라고 한다.     다중 인덱스 (MultiIndex) 생성1. 생성자 기반 생성  2. array를 통한 생성  3. tuple를 통한 생성 4. product를 통한 생성 이렇게 다중 인덱스 (MultiIndex)를 만들 수 있고 이 값을 데이터 프레임 생성할 때 index 값으로 넣어주면 된다.   물론, columns에 값을 넣어도 된다.    여기서 names는 행과 열 각각의 상위 계층, 하위 계층의 이름을 붙여준 것이이다.(사진 참고) .. 2024. 10. 15.
Coroutine(2) 2024. 10. 13.
Coroutine(1) import kotlinx.coroutines.*import java.lang.Thread.sleep/***fun main(){ GlobalScope.launch { println("Hello world!2") //코루틴에서 실행 } println("Hello world!1") //main thread에서 실행 sleep(1000)}* Hello world!1* Hello world!2**fun main(){ runBlocking { launch { //얌체 - 양보하지 않는다. println("Hello world!2") //코루틴에서 실행 } } println("Hello world!1") //main th.. 2024. 10. 13.
Array, Generic, Collection) Map Map은 딕셔너리와 비슷한데, 키와 값으로 이루어진 원소들의 모음이다. [불변 Map - mapOf()]map의 출력 방식fun main(){ val mapA: Map = mapOf("One" to 1, "Two" to 2, "Three" to 3) //키와 값을 동시에 출력 for ((k, v) in mapA) { println("($k, $v)") } //(One, 1) //(Two, 2) //(Three, 3) //키만 출력 println(mapA.keys) //[One, Two, Three] //값만 출력 println(mapA.values) //[1, 2, 3]}  키가 중복된 경우 ⭐️: 이전 값은 무시하고 새로.. 2024. 10. 13.
Array, Generic, Collection) Set Set은 순서가 없고, 중복을 허용하지 않는 원소들의 모음이다. 즉, 인덱싱이 불가하다.  [불변 Set - setOf()]Set의 size: 중복은 제거하고 요소 개수를 센다. val setA: Set = setOf(1,2,3,4,4,4)println(setA.size) // 4가 중복이기 때문에 개수는 4개    Set을 List로 변환: List로 변환하면 인덱싱도 가능해진다. val listA: List = setA.toList()println(listA) //[1, 2, 3, 4]     null 값이 있는 Set: ?를 사용해서 null 있어도 안전하게 처리해야한다.null도 중복을 허용하지 않기 때문에, 하나만 있다고 간주한다.val setA: Set = setOf("How", "Are", .. 2024. 10. 13.
Array, Generic, Collection) List Collection이란 여러 원소들의 모음이다. List는 순서가 있는 원소들의 모음이다. 즉, 인덱싱이 가능하다.  불변 List - listOf()[List와 관련된 표준 라이브러리들]val strList: List = listOf("red", "green", "blue")  sizeprintln(strList.size) //3 first, lastprintln("${strList.first()}, ${strList.last()}") //red, blue mapprintln(strList.map { it.length }) //[3, 5, 4]// 각 원소들의 길이 출력, map은 순환하는 것 filterprintln(strList.filter { it.length > 3 }) //[green, blu.. 2024. 10. 13.
Array, Generic, Collection) Generic 이터레이터 원소 출력fun main() { val intSequence: Iterable = listOf(1,2,3,4,5) val iter:Iterator = intSequence.iterator() while(iter.hasNext()){ //다음 원소가 없을 때 까지 val item = iter.next() println(item) // 1 2 3 4 5 }} 콜렉션fun main() { val intCollection: Collection = listOf(1,2,3,4,5) println(intCollection.size) //5 println(intCollection.isNotEmpty()) //true println(intCo.. 2024. 10. 13.
1~5장 교수님 블로그 1장코틀린: 진법 변환 구현 코틀린: 진법 변환 구현십진수 123을 8진수로 어떻게 변환할까요? toString(radix:Int) 함수를 사용하면 됩니다. 아주 쉽죠!fun main() { val x: Int = 123 println("$x is ${x.toString(8)} in octal representation")}라이브러리를 사용하지 않고 직접yshong60.tistory.com코틀린: package와 import(updated) 코틀린: package와 import(updated)쉽게 다가가는 최신 프로그래밍: 코틀린 - 1.2.2 라이브러리에서 import문에 대한 보충 설명입니다. 패키지(package)의 영어 단어 뜻은 꾸러미(parcel), 상자(box)이지만, 프로그래밍 언어에서 패.. 2024. 10. 12.
it과 this it: it은 람다식에서 단일 매개변수를 참조할 때 사용한다. val numbers = listOf(1, 2, 3, 4, 5)// numbers의 각 요소를 it으로 참조numbers.forEach { println(it) // 여기서 it은 리스트의 각 숫자를 가리킴}   this: this는 클래스 내부에서 자기 자신을 가르킬 때 사용한다. 주로 객체의 프로퍼티나 메서드를 참조할 때 사용한다.class Person(val name: String) { fun introduce() { println("My name is ${this.name}") // this는 현재 객체인 Person을 가리킴 }}val person = Person("Kim")person.introduc.. 2024. 10. 12.