반응형

분류 전체보기 658

[C] C언어 비트 연산

개요임베디드 개발자는 비트연산을 사용해서, 장치를 제어하기 때문에 비트연산을 공부해야 한다. MCU를 예를 들면 하나의 칩 안에 CPU / 메모리 / Disk 까지 모두 들어가 있다.MCU의 여러개의 “PIN” 중 하나에다가 장치를 전선으로 연결한다.각 Port의 PIN의 상태를 비트로 관리하고 각 상태마다 장치의 작동 상태를 제어할 수 있다.  n 비트 표현 방법bit = 0과 1 을 나타내는 최소 단위1101 = 4bit100111 = 6bit기본적으로 32bit를 기준으로 이야기하지만, 32bit는 너무 길어서 8bit or 16bit 내에서 연습을 한다. 수를 2진수 8bit로 표현하기0xA = 0b000010100xC = 0b00001100수를 2진수 10bit로 표현하기0x1E = 0b0000..

[C] C언어 진수 변환

진수 변환을 공부하는 이유진수 변환은 임베디드 장치로부터 나온 Data를 분석하는 과정이다.장치는 2진수 → 16진수로 표현한다.개발자는 16진수 → (2진수) → 10진수로 빠르게 변환해서 이해해야 한다.  16진수를 쓰는 이유컴퓨터는 기본적으로 2 진수를 사용하고, 사람은 10진수를 사용한다.사람이 알아보기 힘든 2진수를 10진수로 변환하는데 계산이 오래 걸린다.2진수를 보다 알아보기 쉽게 쓰기 위해 16진수를 사용한다. 예를 들어 1Byte로 표현할 수 있는 0b00001111는 16진수로 0x0F로 나타낼 수 있다.만약 int타입의 변수를 이진수로 나타내면 32Bit로 나타내야 한다.long long등의 타입을 나타낸다면 읽어야할 이진수가 너무 길기때문에 사람이 이해하기 너무 어렵다.  진수 표기..

[C] C언어 메모리 주소와 포인터, 변수 배열 문자열 포인터

개요변수와 주소의 관계에 대해 학습하고 이해한다. 배열의 주소와 배열 이름의 관계에 대해 학습하고 이해한다.  변수의 메모리 주소int x = 10 변수가 있다.프로그램이 실행되어 메모리에 적재되면, 변수를 위한 공간이 메모리에 생긴다.그 공간을 나타내는 이름이 변수이름, 그 공간을 나타내는 시작 값을 주소라 한다.변수 이름은 개발자( 사람 ) 을 위한 것이고, 주소는 컴퓨터를 위한 값이다.모든 변수들은 주소가 존재한다. x에 10을 대입하고 return까지 트레이스 후 조사식을 확인하면 &x를 통해 변수 x의 메모리 주소를 알 수 있다. 배열의 메모리 주소배열의 경우 배열의 이름이 바로 “배열의 시작 메모리 주소”이다. 배열 a의 주소와 a[0]의 주소가 같은 것을 볼 수 있다. 메모리 주소int a ..

임베디드 S/W 개발과 Application

Application란?운영체제 안에서 동작하는 프로그램을 App 이라고 한다. 모바일 app의 경우 안드로이드라는 운영체제 안에서 동작되는 프로그램이므로, App이다.마리오카트와 같은 게임도 닌텐도 OS에서 동작되는 프로그램이기에 App이 맞다. 그럼 리눅스에서 C언어로 개발하는 프로그램도 App일까?리눅스 운영체제 안에서 돌아가는 프로그램이기에 App이 맞다. 임베디드 개발자의 구분임베디드 S/W 개발자를 아래와 같이 나눌 수 있다.Application Level 개발자Middleware Level 개발자Low Level 개발자 Application level 개발자임베디드 S/W 개발자라고 무조건 Firmware 같은 Low Level 개발만 하지 않는다.임베디드에서 사용되는 운영체제는 다음과 같다..

임베디드 2024.09.29

[G1] 백준 3665번 최종 순위 C++ 위상 정렬

리뷰 각 순위별 간선을 생성하고, 쿼리로 입력되는 노드간 간선을 반전시킨 후 위상 정렬을 수행하는 문제https://www.acmicpc.net/problem/3665 전역 변수tc, n, m : 테스트 케이스의 개수 tc, 팀의 개수 n, 순위 변경 쿼리의 개수 mlst : 작년 순위 정보를 저장할 정수형 벡터cnt : 선순위의 개수를 저장할 정수형 벡터result : 금년 순위 정보를 저장할 정수형 벡터path : 인접 리스트를 저장할 정수형 2차원 벡터 함수1. initvoid init() 각 테스트 케이스마다 lst, cnt, result, path 벡터를 clear해주는 함수 2. input()void input() n값을 입력 받고 각 테스트 케이스 마다 lst, cnt, path의 크기를 n..

[P5] 백준 6549번 히스토그램에서 가장 큰 직사각형 C++ 세그먼트 트리, 분할 정복

리뷰 세그먼트 트리를 응용하여 히스토그램 상에서 가장 큰 면적을 구하는 문제https://www.acmicpc.net/problem/6549 전역 변수lst : 히스토그램의 높이 정보를 저장할 정수형 배열, 최대 히스토그램 크기 10만으로 초기화 해준다.tree : 세그먼트 트리 정보를 저장할 정수형 배열, lst의 4배 40만으로 크기를 초기화 해준다.n : 히스토그램의 최대 갯수를 저장할 정수형 변수  함수1. initvoid init() 각 테스트 케이스 마다 lst와 tree를 0으로 초기화 해주는 함수 2. inputvoid input() 데이터를 입력 받고 히스토그램 높이 정보를 lst배열에 초기화 해주는 함수 3. buildvoid build(ll node, ll start, ll end) ..

[P5] 백준 2243번 사탕상자 C++ 세그먼트 트리, 이분 탐색

리뷰 세그먼트 트리의 기초가 되는 문제인듯 싶다, 구간 업데이트 쿼리가 아닌 리프 노드까지 도달해야 하는 문제수열과 쿼리 시리즈 부터 풀다보니 이런 기초 세그를 응용하는 문제가 약해서 생각의 폭을 넓혀야 겠다 ㅠhttps://www.acmicpc.net/problem/2243 전역 변수tree : 세그먼트 트리 정보를 저장할 정수형 배열, 사탕의 맛 개수가 최대 100만이므로 400만 이상의 크기로 세팅한다. 함수1. updatevoid update(int node, int start, int end, int idx, int val) 매개변수 idx의 맛을 가진 사탕의 개수를 val만큼 더해준다.val에는 음수가 올 수 있으나 문제에 없는 사탕을 꺼내는 경우와 같은 잘못된 입력은 주어지지 않는다. 라고 ..

[P5] 백준 20541번 앨범정리 C++ 해시맵, 문자열, 트리, 구현

리뷰 앨범이나 사진이 중복될 경우 출력하는 문자열이 잘못되어서 계속 틀렸다... 문제를 잘 읽자 ㅠLinked List를 사용한다면 시간을 더 줄일 수 있을 것 같은데 아무래도 해시맵의 키를 경로의 합인 문자열을 사용하다 보니 해시 충돌이 나서 더 이상 시간을 줄이기엔 무리가 있는 것 같다.해시맵을 통해 절대 경로를 key로 사용하는 방식으로 문제를 풀었다.https://www.acmicpc.net/problem/20541 전역 변수Data : 앨범 정보를 저장할 구조체, 부모 앨범명, 현재 앨범명, 현재 앨범에 존재하는 앨범 및 사진 집합이 저장된다.dic : 맵 구조를 나타낼 해시맵, 앨범 이름을 키로 받고, 해당 폴더 정보 Data 구조체를 값으로 저장한다.del_album, del_photo : ..

[P4] 백준 14245번 XOR C++ 세그먼트 트리, 느리게 갱신되는 세그먼트 트리

리뷰 수열의 특정 구간에 XOR연산을 진행하고, 특정 인덱스의 값을 뽑아 출력하는 문제https://www.acmicpc.net/problem/14245해당 문제의 심화 버전으로 구간에 xor를 적용하여 출력하는 문제가 있다. [P3] 백준 12844번 XOR C++ 세그먼트 트리, 느리게 갱신되는 세그먼트 트리리뷰 XOR연산에 대해 재정립 하는 시간이 되었다.https://www.acmicpc.net/problem/12844 전역 변수MAX_N : 노드의 최대 개수를 저장할 인트형 상수 정수, 50만으로 초기화 해준다.nodes : 노드의 정보를 저장할zzzz955.tistory.com   전역 변수MAX_N : 노드의 최대 개수를 정의할 정수형 상수 변수, 50만으로 초기화 해준다.nodes : 수열..

[G4] 백준 2015번 수들의 합 4 C++ 해시맵, 누적합

리뷰 구간의 합이 특정 값이 되는 구간의 개수를 구하는 문제https://www.acmicpc.net/problem/2015 전역 변수dic : 특정 구간의 누적합을 key로 갖고, 그러한 누적합의 개수를 value로 받는 해시맵 long long, int 타입total, ans : 누적합 정보를 저장할 변수total, 인접한 수열의 합이 k인 수열의 개수 ans, long long타입으로 초기화 한다.n, k, : 수열의 길이 n, 찾을 값 k,  함수없음  문제풀이n, k를 입력 받고, sum배열의 1 ~ n번째 인덱스에 누적합 정보를 저장해 준다.다시 1 ~ n번의 정보를 탐색하며 ans에 현재 누적합 인덱스에서 k를 뺀 값의 개수를 더해준다.이후 현재 누적합 정보를 키로 갖는 dic의 개수를 증가..

728x90
반응형