728x90
반응형

분류 전체보기 89

[시스템] 폰노이만 구조와 캐시메모리

폰노이만 구조 / 폰노이만 아키텍처 / CPU 와 메모리 / 메모리 / 캐시메모리 / DRAM vs SRAM / 메인메모리와 캐시메모리 차이점 / 컴퓨터구조 / 시스템구조 컴퓨터 구조가 어떻게 되어있는지 알아보자. 컴퓨터 공학도라면 폰노이만 구조를 정확히 알고 있어야한다. 이를 기본으로 캐시메모리까지 배워보자. CPU CPU 는 0과 1로 구성된 명령어를 하나씩 수행하는 장치이다. 여기에는 명령어를 저장할 넉넉한 공간이 없기 때문에 하드디스크에 CPU가 동작할 명령어를 저장해두어야한다. CPU에 명령어가 하나씩 전달되고, 이에 따라 명령어를 수행한다. 하지만 CPU와 하드디스크만 두고 컴퓨터를 만든다면 CPU 효율이 너무 떨어진다는 문제점이 있다. CPU는 엄청 빠른데, 하드디스크는 너무 느리다. 하드디..

임베디드 2022.04.16

[SSAFY 7기] 임베디드 응용 키트 (임베디드 반)

싸피 임베디드 트랙 / 싸피 embedded track / ssafy embedded track / 싸피 임베디드 / 싸피 7기 / SSAFY 7기 또 뭐가 왔다. 전에 온 임베디드 키트 보고 아빠가 로봇만들기 직전이냐고 그러셨는데 진짜로 로봇 키트와 신기한 애들이 왔다 안전 안경도 왔다.. 뭐지.. 개발자가 안전 안경 끼고 할 일이 뭐가.. 있을까..? 웹 & 알고리즘 배우다가 본격적으로 임베디드 수업 시작한지 한달쯤 된거 같은데 하.. 쉽지 않다 증말..^^ 임베디드 개발자 진짜 돈 마니 줘야뎀!!!!!!!!!!!! 임베 개발자 돼서 돈 많이 벌어야쥐

SSAFY 2022.04.15

[백준] 9095번: 1,2,3 더하기 / C++

풀이 문제 : 백준 9095번 : 1,2,3 더하기 풀이 언어 : C++ 알고리즘 : DP 문제링크 : https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 문제 요약 입력 값을 1, 2, 3의 합으로 나타낼 수 있는 모든 방법의 수를 구해야한다. 1 + 2 와 2 + 1 는 다른 것으로 취급된다. 접근 방식 일단 입력되는 값이 11 미만의 정수이고, 각 케이스마다 값이 정해져 있다는 점을 파악했다. 또한 입력 값의 수가 커짐에 따라 정답인 수의 크기도 커진다.. 여기서 피보나치와 비슷하다는 느낌을 받았다. 1 : 1 (1) 2 : 2 / 1+1 ..

알고리즘/백준 2022.04.14

[알고리즘] Dynamic Programming (DB)

코딩테스트에서 DP 알고리즘은 단골 문제로 나온다. 그런데도 많은 사람들이 어려워하고, 나 또한 매우 어려워한다. 이번 기회에 개념을 확실히 다지고 DP 를 정복하고자 한다!! 피보나치 수열 DP 알고리즘의 대표적인 예시이다. 예시를 보면서 DP를 이해해보자. 피보나치 수열은 점화식으로 표현할 수 있다. 이 점화식을 따라서 알고리즘을 짜기 위해서는 재귀 함수를 이용해야한다. int fib(int n){ if (n==1 or n==2){ return 1; } return fib(n-1) + fib(n-2); } 그런데 이런식으로만 작성하면 구하고자 하는 값이 커질때는 시간이 너무 오래 걸릴 수도 있다는 한계점이 있다. 왜냐하면 이미 구한 값을 계속 구해야하기 때문이다. n이 1이거나 2일때가 나올때까지 계..

알고리즘 2022.04.13

[C언어] Byte / Bit 단위 데이터 파싱

바이트 단위 데이터 파싱과 비트 단위 데이터 파싱에 대해 알아보겠다. 임베디드 개발자는 비트 / 바이트 단위 데이터 파싱에 대해 매우 잘 알고 있어야한다. 하드디스크 데이터시트를 보고 비트 / 바이트단위로 데이터를 가져올 수 있어야 하기 때문이다. Byte 단위 데이터 파싱 Union 한 union 속 멤버들은 서로 값을 공유한다. Union을 이용해서 바이트 단위의 파싱을 편리하게 할 수 있다. 참고로 순서가 거꾸로인건 메모리에 리틀엔디안으로 저장되어있기 때문이다. 리틀엔디안에 대한 자세한 설명은 다음 포스팅을 참고 바란다. [메모리] 빅/리틀 엔디안 (Big/Little-Endian) 빅엔디안 / 리틀엔디안 / Big Endian / Little Endian / 엔디안 / 메모리 저장 순서 / 엔디안..

임베디드 2022.04.12

[C언어] 문자열 파싱 2 - sscanf sprintf strtok strchar strstr strtol

C언어 / 문자열 파싱 / sscanf sprintf strtok strchar strstr strtol / 임베디드 개발 / 임베디드 문자열 파싱 / 임베디드 파싱 전 포스팅에 이어 문자열 파싱에 대해 이야기해보겠다. sscanf 문자열을 내가 원하는 형식으로 쪼개어 저장한다. 예시 char vect[30]="[Blog] IT 2022"; char title[10]; char msg[10]; int num; sscanf(vect, "[%s]%s%d", &title, &msg, &num); // title 에 Blog, msg에 IT, num에 2022 저장됨 sprintf 문자열을 내가 원하는 형식으로 합쳐서 저장할 수 있다. 예시 char vect[30]; char title[10] = "Blog";..

임베디드 2022.04.11

[C언어] 문자열 파싱 1 : strlen strcpy strncpy strcat strcmp atoi

C언어 / 문자열 파싱 / strlen strcpy strncpy strcat strcmp atoi / 임베디드 개발 / 임베디드 문자열 파싱 / 임베디드 파싱 임베디드 업계에서 문자열 파싱을 통해 시각화를 구현해야한다. 그러기 위해선 로그데이터를 제대로 분석해야한다. 문자열로 이루어진 로그데이터를 가공하고 차트화하기 위해 문자열 함수를 배울 필요가 있다. 임베디드에선 파싱을 위해 주로 string.h 헤더파일 내에 있는 함수를 이용한다. #include strlen 문자열의 길이 구하는 함수 char str[10]="hello"; int len=strlen(str); printf("%d",len); // 5 출력됨 strcpy 문자열 복사 char str[10]="hello"; char temp[10]..

임베디드 2022.04.10

[비트연산] 특정 위치 비트 set / clear / 반전

비트연산은 임베디드 개발시 기본중에 기본 지식이다. 포트의 특정 핀에 전선으로 연결된 장치를 on/off 하기 위해서는 특정 위치 비트를 0>1 / 1>0 로 바꿀 수 있어야한다. 예를 들어, 모터가 MCU의 6번 핀에, 전등이 3번 핀에 연결되어 있을때, 각각의 장치가 따로 동작할 수 있어야한다. 포트에 0000 0100 값을 넣으면 전등이 켜질 것이고, 포트에 0010 0000 값을 넣으면 전등은 꺼지고 모터가 켜질 것이다. 장치 서로의 영향을 주지 않고 각각 따로 모터에 작동 시키기 위해선 비트연산을 활용해야한다. 비트 clear 특정 비트를 0으로 만드는 것 비트 set 특정 비트를 1로 만드는 것 특정 비트 set하기 a : 대상 비트, n : set하고 싶은 비트 위치일때 다음과 같이 표현할 ..

임베디드 2022.04.09

[C언어] 자료형 : float, double, 부동소수점, 고정길이정수

임베디드 개발자는 자료형 float, double, 부동소수점(IEEE 754), 고정길이정수에 대해 잘 알고 있어야 한다. 실수 처리 방법 float float 를 출력할때는 %f를 이용한다. 소수점 7자리 까지 저장이 가능하다. 정밀도 비교적 낮고, 처리 속도는 빠르다. double float 를 출력할때는 %lf를 이용한다. 소수점 15자리 까지 저장이 가능하다. 정밀도 비교적 높고, 처리 속도는 느리다. 반올림은 다음과 같이 한다. printf("%.3lf",a); //소수점 아래 세자리까지 출력 , 네자리에서 반올림 부동소수점 float 와 double은 부동소수점이라고 하는데, 이것은 근사치로 소수점을 저장하는 것이다. 이렇게 부동 소수점을 저장하는 방식은 IEEE 754 방식이다. 예를들어 ..

임베디드 2022.04.08

[C++] string 내장 함수 : find, npos, substr, erase, to_string, stoi, isdigit, isalpha, tolower/toupper

글쓴이는 코딩테스트를 위한 준비로 C++ 공부를 하고 있으며, 다음 내용은 글쓴이가 자주 헷갈리는 string 함수만 정리해 놓은 것임을 알립니다! 앞으로 이야기할 함수들은 모두 헤더파일 string에 있는 아이들이다. #include .find() int findPos = input.find(cmp,pos); pos의 위치부터 cmp 문자열을 찾아서 발견 index값을 리턴해주는 메서드다. cmp("123")가 temp에 몇개 있는지 세는 알고리즘이다. string temp = "12345671234567"; string cmp = "123"; int cnt=0; int pos=0; while(1){ int findPos = temp.find(cmp,pos); //pos값이 계속 바뀌면서 cmp를 찾는..

알고리즘 2022.04.07
728x90
반응형