분류 전체보기 270

Overloading, Override, 다형성

1 Overloading 정말 간단하면서도 다형성을 지원하는 방법이 오버로딩(Overloading)입니다. 프로그래밍에서 Overloading이란 메소드 함수명은 같은데 전달받는 파라미터 인자 값에 의해 호출되는 메소드가 다르게 하는 것입니다.   아래의 예시를 봅시다.숫자를 더하는 프로그램을 만드는데 2개의 숫자 덧셈뿐만 아니라 3개의 숫자 덧셈까지도 가능하게 하도록 하려 합니다.  [overloading 사용 안할 시]  그렇다면 우리는 덧셈을 하는 메소드를 호출하는데 2개 숫자일 때와 3개 숫자일 때, 경우에 따라 호출해주어야 합니다.하지만 이는 매우 불필요한 작업입니다. 매개변수로 전달되는 값의 개수(x , y , z or x. y)의 값에 의해 기능이 결정되고 메소드..

: : C++ 2024.04.17

[Linux] 환경변수 PATH 추가하기

1. [Linux] 환경변수 $PATH   1.  PATH 설정 이유 Linux 쉘에 명령을 입력하면 해당 이름의 프로그램이 있는지 확인하기 위해 모든 디렉토리를 검색하지는 않고 지정한 항목만 찾는다.이때 $PATH 라는 환경 변수를 이용해 쉘이 어디를 볼지 경로를 확인한다. 즉, PATH에 프로그램 실행 경로를 추가해주면, 명령어 실행 시 경로를 따로 입력하지 않아도 PATH 환경변수에 있는 디렉토리에서 실행파일을 찾아 실행해 준다.    2. printenv 명령어로 현재 적용된 환경변수 확인 ubuntu@ip-172-31-42-70:~$ printenvSHELL=/bin/bashPWD=/home/ubuntuLOGNAME=ubuntuXDG_SESSION_TYPE=ttyMOTD_SHOWN=pamHOME..

귀무가설, 대립가설

귀무가설, 대립가설 귀무가설의 정의는 ‘모집단의 특징이 옳다고 제안하는 잠정적인 주장’이며, 대립가설은 이를 반대하는 주장이다. 좀 더 쉽게 풀이하자면, 귀무가설은 누구나 사실이라고 여기고 있는 것이고, 대립가설은 귀무가설을 반박하기 위한 가설로써 연구자의 분석목적이 된다. 대립가설은 양측대립가설과 단측대립가설이 있다. 단측대립가설은 독립변수와 결과변수와의 관련성을 검정할 때 그 방향이 미리 어느 한쪽으로 결정되어 있는 경우이다. 양측대립가설은 독립변수와 종속변수 간에 관련성 혹은 차이의 존재 여부에만 관심을 가지며, 그 방향은 따지지 않는 가설이다.

EMI / EMC, 그리고 전자기학

Intro "4파이 입실론제로분의 ~ 뮤원뮤투 ... " 시험기간에 바짝 외운 문제풀이로 전자기학 시험문제를 풀었던 2학년. 1학년 수학을 자신만만하게 풀어제끼고, 벡터는 내적과 외적만 알면 되는 줄 알았지만 .. 벡터와 엮인 전자기학은 공식만 외우고 대입하여 풀게된다. 그러고 만난 EMI / EMC, 완전히 Isolation 된 회로에서의 이상동작. 절연 파괴 (絶緣破壞, electrical breakdown) 완전히 분리된 회로에서 전자가 넘나들며 흐른다. 가스레인지에서 배터리만으로 공기중에 Arc가 발생하며, 하늘에서 천둥번개가 내려치는 것 처럼 공기(절연물질)를 넘어서 전기가 흐르는 것 처럼, PCB 회로기판에서도 절연 파괴가 일어날 수 있다. 후에 전자기학, 무선통신, 안테나공학, 정보통신공학 ..

E - E Architecture 2024.03.27

로지스틱 회귀분석(Logistic Regression)

0. Intro 로지스틱 회귀분석은 분류 분석에 속하는 분석으로, 종속 변수가 범주형인 경우 새로운 자료에 대한 분류 목적으로 사용한다. 1.1 분류 분석의 유형들 1) 신경망 모형 (Artificial Neural Network) 2) 의사결정나무 (Decision Tree) 3) 앙상블 모형 (Ensenble) 4) 규칙기반 (Rule-Based) 5) 사례기반 (Case-Based) 6) 인접 이웃 (Nearest NEighbor) 7) 베이즈 분류 (Bayesian) 8) 서포트 벡터 머신 (SVM, Support Vector Machine) 9) 유전자 알고리즘 등이 있다. 1. 로지스틱 회귀모형 (Logistic Regression) 반응변수가 범주형인 경우에 적용하는 모형이다. 선형회귀분석이..

[CSAPP] Ch 3. 프로그램의 기계수준 표현 : (9) 이기종 자료구조, (10) 기계수준 프로그램에서 제어와 데이터의 결합

3.9 이기종 자료구조   C는 서로 다른 유형의 객체를 연결해서 자료형을 만드는 두 가지 방법을 제공한다.    (1) 구조체 : struct 키워드를 사용해서 선언, 다수의 객체를 하나의 단위로 연결    (2) 공용체 : union 키워드로 선언, 하나의 객체를 여러 개의 다른 자료형으로 참조될 수 있도록 함    3.9.1  구조체   C struct 선언은 서로 다른 유형의 객체들을 하나의 객체로 묶어주는 자료형을 생성한다. 하나의 구조체 내의 서로 다른 컴포넌트들은 이름을 이용해서 참조된다. 구조체의 구현은 구조체의 모든 컴포넌트들이 메모리의 연속된 영역에 저장되며, 구조체의 포인터가 첫 번째 바이트의 주소라는 점에서 배열과 유사하다. 컴파일러는 각 필드의 byte offset을 가리키는 각 ..

[CSAPP] Ch 3. 프로그램의 기계수준 표현 : (6) 제어문

3.6  제어문   3.6.1  조건코드   앞서 보았듯, CPU에는 정수 레지스터와 함께 가장 최근의 산술 또는 논리연산의 특성을 설명하는 레지스터들을 운영한다.CF: 캐리플래그(carry flag). 가장 최근의 연산에서 가장 중요한 비트로부터 올림이 발생한 것을 표시→비부호형 연산에서 오버플로우를 검출ZF: 영플래그 (Zero flag). 가장 최근 연산의 결과가 0인것을 표시SF: 부호 플래그 (Sign flag). 가장 최근 연산이 음수를 생성한것을 표시OF: 오버플로우 플래그 (Overflow flag). 가장 최근 연산이 2의 보수 오버플로우를 발생시킨 것을 표시→ 부호형 연산에서 오버플로우를 검출​​다른 레지스터들은 변경시키지 않으면서 조건 코드만 변경해 주는 두 개의 인스트럭션이 있다. ..

[CSAPP] Ch 3. 프로그램의 기계수준 표현 : (5) 산술연산과 논리연산

3.5  산술연산과 논리연산    3.5.1  유효주소 적재 (Load Effective Address)    leaq는 movq와 유사하나, leaq는 포인터를 생성하기 위해 사용된다는 차이가 있다. 즉, leaq 는 실제 데이터를 읽어오는게 아니라, 메모리의 주소자체 혹은 주소계산값을 가져온다.​  이 명령어는 가리키는 위치에서 읽기를 수행하는 대신 '유효주소'를 목적지에 복사한다. 그래서 목적 오퍼랜드에는 반드시 레지스터만 올 수 있다.    3.5.2  단항 및 이항 연산  여기서 단항연산은 c언어에서 i++ 과 같은 자기 혼자서도 연산이 가능한 연산, 이항연산은 a+=c 같은, 다른 항이 존재해야 하는 연산이다. 이항연산에서 두번째 오퍼랜드는 소스이면서 목적지로 사용된다.  소스에는 상수, 레지..

[CSAPP] Ch 3. 프로그램의 기계수준 표현 : (4) 정보 접근하기

3.4  정보 접근하기   x86-64 CPU 는 64bit 값을 저장할 수 있는 16개의 범용 레지스터를 보유하고 있다. 이 레지스터들은 정수 데이터와 포인터를 저장하는데 쓰인다. 64bit로 확장하면서 8개의 새로운 레지스터들이 추가되었으며, %r8 ~ %r15라 칭한다. 레지스터 관련 참고 :x86-64 CPU 레지스터(Register) 종류, 32bit / 64bit 비교 (tistory.com)   중첩된 사각형이 보여주듯, 인스트럭션들은 16개의 레지스터 하위 바이트들에 저장된 다양한 크기의 데이터에 대해 연산할 수 있다. 바이트수준 연산들은 가장 덜 중요한 바이트에 대해 연산을 할 수 있으며, 16비트 연산들은 가장 덜 중요한2바이트에 접근하고, 32비트 연산은 덜 중요한 4바이트에, 64비..

[CSAPP] Ch 3. 프로그램의 기계수준 표현 : (3) 데이터의 형식

3.3  데이터의 형식   인텔 프로세서들이 처음에는 16비트 구조를 사용했기 때문에, 워드라는 단어를 16비트 데이터 타입을 말할 떄 사용한다. 32비트는 '더블워드' , 64비트는 '쿼드워드' 라고 부른다.       • 포인터 : 64bit 머신에선 예상대로 8byte 쿼드워드로 저장됨.      • 부동소수점 : x86계열에서 특별히 10byte 부동소수점 형식 연산을 구현하였으나, 호환성과 성능을 고려하여 이용하지 않는 것이 좋다.   여기서 주목할 점은, 포인터 char * 은 쿼드워드로 표현된다는 것 → 모든 포인터가 다 q로 표현된다.  이 데이터의 형식이 각 인스트럭션의 접미사로 붙여쓰이게 된다.  예를 들면 movb (바이트이동), movw (워드이동), movl (더블워드 이동), m..