일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- linux c++ 컴파일
- 컨벌루션 연산
- 남산업힐
- 데이터 해저드
- Pyvrilog tutorial
- 클럭 게이팅
- pytest-pythonpath 설치 오류
- DNN 가속기
- CLOCK GATING
- gpgpu-sim
- pygraphviz 설치 오류
- CUDA
- AMBA
- DNN Accelerator
- 이진수 곱셈 알고리즘
- systolic array
- Pyverilog 실행
- linux makefile 작성
- makefile
- 대구 반도체 설계기업 특화
- 딥러닝 가속기
- gcc 컴파일
- Design DNN Accelerator
- pyverilog 설치 오류
- Makefile compile
- Pyverilog 튜토리얼
- Pyverilog 설치
- Data HAzard
- CDC
- linux c 컴파일
- Today
- Total
목록Language/c, c++ (11)
오늘은 맑음
대학교 2학년 때 공부했던 자료구조와 알고리즘을 다시 한 번 공부해볼까 합니다. 알고리즘과 자료구조는 소프트웨어/하드웨어 엔지니어를 가리지 않고 모두 필요한 기본 소양입니다. 함수와 함수끼리 주고 받는 데이터에 대해 이해하고 -> 모듈과 모듈 사이에 주고받는 데이터에 대해 이해하고 함수에서 데이터를 어떻게 처리할지 정의한다 -> 모듈에서 데이터를 어떻게 처리할지 정의한다 이러한 공통점으로 인해 입사시 보는 알고리즘 테스트는 python/java/c++/c를 가리지 않습니다. 물론 편의성으로 인해 python이 선호되지만 python 역시 여러가지 표현(언어)중 하나입니다. 이러한 점은 verilog hdl 또한 다르지 않습니다. 따라서 더욱 효율적인 시스템을 설계하기 위해 다시 자료구조와 알고리즘 공부를..
오늘은 여전히 헷갈리는 구조체와 구조체 포인터의 멤버 참조 방법에 대해 정리해보겠습니다. 사실 헷갈리면 안되지만 간혹 명확하게 떠오르지 않네요. 앞으로 확실하게 기억하기 위해서 오늘 정리를 해보려고 합니다. C언어에서는 구조체를 사용할 때도 있고 구조체를 가리키는 포인터를 사용할 때도 있습니다. 이 두가지 상황에서 각자 구조체의 멤버변수를 참조하는 방법이 다릅니다. 구조체 구조체는 멤버변수를 '.'를 통해 참조 구조체 포인터 구조체 포인터는 멤버변수를 '->'를 통해 참조 먼저 아래와 같이 구조체와 구조체 포인터 모두 멤버변수를 '.'로 참조해보겠습니다. 이렇게 참조한 후 컴파일을 하면 아래와 같이 메시지가 나옵니다. 포인터이므로 '->'를 통해 참조하라는 에러가 나오네요. 정말 친절합니다. 이제 주석을..
c언어에서는 malloc을 이용해서 동적할당을 할 수 있습니다. malloc은 stdlib.h 안에 들어있으므로 사용하려면 stdlib 헤더파일을 include 해주셔야 합니다. malloc함수의 원형은 다음과 같습니다. void *malloc(size_t Size); malloc은 함수의 동작이 성공하면 시작 메모리 주소를 반환하고, 실패하면 NULL을 반환합니다. 그리고 시작 메모리 주소부터 Size만큼을 동적 메모리로 할당합니다. 포인터를 선언하고 malloc을 이용해서 동적할당을 해보겠습니다. int형으로 buffer를 선언하고 malloc을 이용해서 int * 10을 사이즈로 잡아줍니다. 그러면 이제 buffer에는 int 사이즈만큼의 메모리 x 10만큼의 크기가 동적할당됩니다. 이제 buffe..
vector 이차원 배열의 column, 즉 열칸을 자유롭게 사용하고 싶어 알아보다가 이중벡터를 알게 되었습니다. 만약 처음에는 2*2의 이차원 배열을 사용하다가 이 상태를 유지하면서 3*2의 배열이 필요하게 된다면... 어렵진 않지만 조금 귀찮죠? 그래서 vector를 사용하여 조금 더 편리하게 사용 해 보았습니다. 먼저 이차원 벡터를 선언해줍니다. vector Vec2D; 다음에는 벡터에 넣을 벡터를 선언해줍니다. vector vec1; vector vec2; vec1에는 0과 1을 넣어 줄 것이고 vec2에는 0부터 4까지 숫자를 넣어주겠습니다. vec1.push_back(0); vec1.push_back(1); for (int i = 0; i
최소공배수알고리즘을 공부하다 보면 최소공배수를 구하는 경우가 존재 합니다.이 때 사용할 수 있는 최소공배수 알고리즘에 대해 알아보겠습니다.최소공배수를 구하는 방법에는 대표적으로 유클리디안 호제법이 있습니다.최소공배수를 구하고 싶은 a와 b라는 숫자가 있다고 가정하겠습니다.case 1 가장 좌측에는 몫이 존재하며 우측에는 모듈러의 값이 존재합니다.만약 두 수의 최대공약수가 존재한다면 위의 연산을 반복하였을 시 b가 0이되는 순간이 존재합니다.그 때의 a가 두 수의 최대공약수가 됩니다. case 2만약 두 수가 서로소라면, 즉 최대공약수가 1이라면 b가 0이 되는 순간 a가 1이 된다.따라서 최대공약수가 1임을 알 수 있다. 소스코드는 위와 같으며 출력창은 다음과 같습니다.