반응형

2024/10 58

[TIL] GCC, GNU Complier Collection

GCC, GNU Complier CollectionGNU 프로젝트의 오픈 소스 컴파일러 모음집  단순한 컴파일 과정을 넘어 전처리 동작, 어셈블 동작, 링킹 동작을 같이 수행해 Binary file, 실행 가능한 파일을 만드는 역할을 한다 GCC 는 Front-End 부터 Back-End 까지 모두 자체적으로 개발해 제공되고 있으며, GPLv3 인증으로 모든 소스가 공개되어져 있다 해당 컴파일러 모음집을 사용할 경우 사용된 소스를 무조건 공개해야 하는 의무를 가지게 된다  GCC 동작 과정1. 전처리 과정 - 전처리기인 cpp0 에 의해 .i 파일 생성2. 컴파일 과정 - C 컴파일러인 cc1 를 통해 .s 파일 생성 3. 어셈블 과정 - 어셈블러인 as 에 의해서 .o 파일 생성 4. 링킹 과정 - 링..

TIL/C언어 2024.10.04

[TIL] 포인터 Pointer

포인터 Pointer메모리 주소값을 저장하는 변수 데이터가 저장된 메모리 위치를 가리키는 값을 저장한다  포인터 선언참조 연산자 * 를 사용하여 선언자료형은 포인터가 가리지고자 하는 변수의 자료형 명시선언과 동시에 초기화를 함께 하는 것을 권유(의도하지 않은 메모리 장소에 값을 저장자료형 * 포인터이름 = &변수이름 or 주소값;  포인터와 주소 연산자& 주소 연산자 - 변수의 메모리를 가져올 수 있다 * 역참조 연산자 - 포인터가 가리키는 주소의 실제 값을 읽거나 쓸 수 있게 한다 & 연산자 - 주소 연산자 변수의 주소를 반환하는 연산자, 변수가 메모리에서 저장된 위치 (주소) 를 얻을 수 있다int x = 10;int* ptr = &x; // x의 주소를 포인터 ptr에 저장 위 코드에서 &x 는 ..

TIL/C언어 2024.10.03

[혼공컴운] CH03 명령어

CH03 명령어03-1 소스 코드와 명령어  고급 언어 - 개발자가 이해하기 쉽게 만든 언어 ex. C언어, JAVA, C++ 저급 언어 - 컴퓨터가 이해하고 실행하는 언어  어셈블리어  컴파일 언어와 인터프리트 언어 고급 언어에서 저급 언어로 변환되는 과정은 크게 두 가지가 있다1) 컴파일 방식 2) 인터프리트 방식 1) 컴파일 방식 컴파일러가 소스 코드 전체를 0과 1의 명령어로 이루어진 저급 언어로 변환 컴파일된 저급 언어를 목적 코드라고 한다   2) 인터프리트 언어인터프리터에 의해 한 줄씩 실행소스 코드 전체가 변환되기까지 기다릴 필요 없음  컴파일 언어와 인터프리트 언어의 차이 컴파일 언어 - 컴파일 중 오류가 발생하면 소스 코드 전체가 실행되지 않음 인터프리트 언어 - 인퍼프리트 중 오류가 ..

[혼공컴운] CH02 데이터

CH02 데이터 02-1. 0과 1로 숫자를 표현하는 방법  비트 bit0과 1을 표현하는 가장 작은 정보 단위, n 비트로 2^n 가지의 정보 표현이 가능하다 워드CPU 가 한 번에 처리할 수 있는 정보의 크기 단위하프 워드 Half Word - 워드의 절반 크기풀 워드 Full Word - 워드 크기더블 워드 Double Word - 워드의 두 배 크기 이진법 Binary0과 1로 수를 표현하는 방법, 숫자가 1을 넘어가는 시점에 자리 올림   2의 보수0과 1로 음수 표현하기, 어떤 수를 그보다 큰 2^n 에서 뺀 값모든 0과 1을 뒤집고 1 더한 값이 2의 보수이다 십육진법숫자가 15를 넘어가는 시점에 자리 올림  02-2 0과 1로 문자를 표현하는 방법 문자 집합 Character Set컴퓨터가..

[백준] 12865 아주 평범한 배낭 Python

1. 문제 최대 K 만큼의 무게만을 넣을 수 있는 배낭에무게 Weight 와 가치 Value 를 가지는 N 개의 물건이 있다배낭에 넣을 수 있는 물건들의 가치의 최대값 찾기 2. 제한시간 제한 2초, 메모리 제한 512MB물품의 수 1 버틸 수 있는 무게 1 각 물건의 무게 1 해당 물건의 가치 0 3. 알고리즘 분류* 다이나믹 프로그래밍 * 배낭 문제 4. 접근 방식Knapsack Problem 을 한 번 공부했다 Knapsack Problem 개념 정리 물건을 쪼갤 수 있다는 언급은 없어서 0-1 Knapsack 방식으로 접근했다 예시 입력을 기준으로 - n = 4, k = 7, 물건 (6, 13), (4, 8), (3, 6), (5, 12) 일 때물건을 무게 오름차순으로 다시 정렬하고 (3, 6),..

알고리즘 2024.10.02

[TIL] 배낭 문제 Knapsack Problem

배낭 문제 Knapscak Problem 최대 K 의 무게를 담을 수 있는 배낭 각기 다른 가치 V 를 가지고 W 의 무게인 N 개의 물건을 배낭에 최대한 가치가 높은 물건들로 담을 수 있는 조합을 찾는 문제  만약 n개의 물건이 있을 때, 가능한 모든 조합을 만들기 위해서는 2^n개의 경우를 시도해 보아야 하고그렇게 된다면 시간 복잡도는 O(2^n) 이기 때문에 Brute Force 는 적합하지 않다  배낭 문제는 물건을 쪼갤 수 있는 Fraction Knapsack Problem 과물건을 쪼갤 수 없는 0-1 Knapsack Problem 으로 나뉜다   부분 배낭 문제 Fraction Knapsack Problem 물건을 쪼개서 넣을 수 있다 가치가 큰 물건부터 담고, 남은 무게만큼 물건을 쪼개는..

TIL/Python 2024.10.01

CH03 프로그램의 기계 수준 표현 3.6

CH03 프로그램의 기계 수준 표현CH3.1-3.5 정리는 아래 참고 https://helloahram.tistory.com/55 CH03 프로그램의 기계 수준 표현 3.1-3.5컴퓨터는 하위 동작들을 인코딩한 연속된 바이트인 기계어 코드 machine code 를 실행한다컴파일러는 프로그램 언어의 규칙, 대상 컴퓨터의 인스트럭션 집합, 운영 체제의 관례 등에 따라 기계어helloahram.tistory.com 3.6 제어문C 의 일부 구문인 반복문, 스위치문들은 데이터에 적용된 시험 결과에 따라 일련의 연산이 실행되는 조건부 실행이 요구된다기계어 코드에서는 조건부 동작을 구현하기 위해 두 개의 기본적인 낮은 수준의 방법을 제공한다, 데이터 값들을 시험해서 이 시험결과에 따라 데이터 흐름이나 제어 흐름을..

반응형