- behavior modeling
- structure
- sequential logic circuit
- Linked List
- normal mode
- interrupt
- ctc mode
- structural modeling
- atmega 128a
- 4bit parallel adder
- full adder
- Recursion
- 8bit timer/counter
- verilog
- dataflow modeling
- Algorithm
- behavioral modeling
- half adder
- Set
- interface
- Method
- LED
- timer / counter
- atmega 128
- Comparator
- gpio
- MUX
- fast pwm mode
- ATMEGA128A
- java
목록C (10)
거북이처럼 천천히
1. 서로 다른 자료형으로 연산하게 되면 메모리의 크기가 큰 자료형을 따라 결과값이 나오게 된다. 문제) 아래와 같이 서로 다른 자료형인 int와 double을 가지고 연산하게 된다면 연산한 결과는 어떤 자료형을 갖게 되는가? int a = 20;double b = 5.5;// a / b == 연산 결과 : double형으로 출력 정답) int형은 4 byte, double형은 8 byte이고, 8 byte가 4 byte보다 크기 때문에 a / b의 연산 결과는 double 형을 갖는다. 이는 '자동 형 변환'에 의해 발생된다. 자동 형 변환에 의해 int / double을 연산이 이루어지면 int형을 double형으로 자동적으로 형 변환이 발생하여 double / double 형태로 연산을 하여 출력..
1. 공용체는 무엇인가?공용체의 선언 방식은 구조체와 동일하나, 구조체는 메모리상에 모든 맴버들을 저장하기 위한 공간을 마련하지만, 공용체인 경우에는 모든 맴버들이 하나의 저장 공간을 공유하며, 사용한다.공용체의 기본 형태는 다음과 같다.// 공용체 선언union student { int stduent_id; double grade; }; 2. 모든 맴버들이 하나의 저장 공간을 공유한다면, 동시에 여러 맴버들을 저장할 수 있는가?공용체에서는 맴버들이 하나의 저장 공간을 공유하면 저장하기 때문에 동시에 여러 맴버들의 데이터들을 저장할 수 없다.따라서 하나의 맴버 값이 저장 공간에 저장되어 있는 상태에서 다른 맴버값이 저장된다면 기존의 맴버 데이터 값에다가 덮어씌우기 형태로 저장된다.따라서 모..
1. Padding byte시스템은 데이터를 빠르게 읽고, 쓰기 위해서 메모리 공간을 일정한 크기 단위로 접근한다.하지만, 구조체는 여러 종류의 자료형을 포함하기 때문에 일정한 크기 단위로 접근하여 데이터를 읽고, 쓰기 힘들다.이로 인해 구조체의 맴버를 빠르게 읽고, 쓰기 힘들다.따라서 구조체의 맴버를 일정한 크기 단위로 빠르게 읽고, 쓰기 위해 (= 일정한 크기 단위로 접근하기 쉽게 만들기 위해) 맴버들 사이에 Padding byte를 넣어준다. 2. Byte alignment구조체의 맴버를 읽고, 쓰는 과정에서 빠르게 수행하기 위해 메모리에서 일정한 크기를 갖고 접근하는데, 이 일정한 크기대로 읽기 편하게 구조체 맴버 간에 Padding byte를 넣는 과정을 Byte alignment라 한다. ..
1. 함수 포인터는 무엇인가?이름에서도 알 수 있듯이 일반 변수 포인터 처럼 함수의 주소를 저장하고, 이를 참조 및 활용할 수 있는 포인터이다.따라서 함수 포인터를 통해 해당 함수를 호출하여 사용할 수 있다. 2. 함수 포인터는 왜 존재하고, 필요하는가?함수 포인터는 주로 다음과 같은 상황에서 주로 사용된다.함수 포인터를 사용하여 코드 간결화여러 사람들과 함께 하나의 대상을 가지고 공동 작업을 수행할 경우callback 구조를 만들기 위해서 3. 함수 포인터 생성 방법함수 포인터를 생성하는 방법은 아래 영상을 참고했다. 일반적으로 함수의 형태는 다음과 같은 구조를 갖는다.ex) int test (int ); → argument의 자료형이 int형이고, return의 자료형이 int형인 tes..
1. 배열 요소의 주소와 배열의 주소Q) 배열명은 "배열의 첫 번째 원소의 주소 값"을 의미하고 있음을 알고 있다. 그럼 &배열명 은 무엇을 의미하는가?#include int main(void) { int list[] = { 1, 2, 3, 4, 5 }; printf("list = %u\n", list); printf("&list = %u\n\n\n", &list); printf("list + 1 = %u\n", list + 1); printf("&list + 1 = %u\n", &list + 1); return 0;} 위 실행 결과를 통해 알 수 있듯이 배열명인 list와 배열명의 주소인 &list는 동일한 주소 값을 갖는다.하지만, 주소 덧셈 연산을 한 결과값은 전혀 다르다.▶ list + 1 = l..