목록프로그램 (94)
Brise
Efficient C-coding 에서는 다음과 같은 목표들을 이루기 위해 코딩을 수행한다. - 낮은 연산시간- 적은 코드 사이즈- 적은 램 차지용량- 적은 레지스터 사용량 컴파일 시간보다는, 컴파일된 코드의 실행시간이 중요하다.gcc의 최적화 옵션을 사용하면, 실행시간이 줄어들 수 있지만,사용자가 원하지 않은 결과를 낼 가능성이 존재하기 때문에(매뉴얼의 방법에 맞춰서 컴파일한다면 그런 가능성이 줄어든다.)가능하다면, 최대한 사용자가 컴파일러에 친숙하게 코딩 하는 것이 중요하다. 0. 변수선언룩업테이블 (메모리 H, 연산시간 L) 1. 연산관련2. 분기관련2.1 루프2.2 if-else / switch2.3 함수 call 1. 연산 관련 - 부동 소수점 연산을 피하자(Avoid float, double)..
부동소수점 연산은 오버플로우 에러의 가능성이 낮다는 장점이 있다. 부동 소수점 변수의 정확도를 알기 위해서 간단한 테스트를 해보았다. 32비트의 float형 변수와64비트의 double형 변수의 정확도를 알아보기 위해서값을 입력한 뒤에 어느 숫자부터 부정확해지는지 알아보도록 하였다. 테스트 코드는 다음과 같다. #include int main (void) { float f = 1.123456789123456789; double d = 1.123456789123456789; printf("Original:\t1.123456789123456789\n"); printf("float:\t\t%2.20f\ndouble:\t\t%20.20f\n",f,d); return 0;} 위 파일을 실행시켜보았을 때에 다음과 ..
http://mintnlatte.tistory.com/category/T%20heory/Comn%20Basics
직렬 RS-232C 보통 9.6 kbit/초 960 B/초 직렬 8250 UART 최대 19.2 kbit/초 1.92 kB/초 USB 저속 1.536 Mbit/초 192 kB/초 USB 완전 속도 12.0 Mbit/초 1.5 MB/초 USB 고속 480 Mbit/초 60 MB/초 I²C 표준 100kbit/초 12.5 kB/초 I²C 저속 10kbit/초 1.25 kB/초 I²C 패스트 400kbit/초 50 kB/초 I²C 고속 3.4Mbit/초 420kB/초 [2]
C언어에서 가장 이해하기 힘든 것이 바로 '포인터'이다. 포인터란 말 뜻대로 가리키는 것이다. 무엇을? 가리키냐 하면 바로 변수를 가리키는 것이다. '능엄경'이라는 책에 '견월망지' 라는 말이 있다. 바로 '달을 보기 위해서는 손가락 끝을 보지말고 손가락 끝이 가리키는 달을 보라' 라는 말이다. 이 말마따나 포인터란 당연히 손가락 끝을 가리키는 것이다. 포인터 주소의 크기는 프로세서가 사용하는 메모리 주소의 크기와 동일하다. 왜냐고?? 포인터는 '주소'를 가리키기 때문이다. 예를 들어 32비트 프로세서의 포인터는 32비트가 된다. 그런데 여기서 중요한점은 아무런 것도 해주지 않으면(void) 포인터가 가리키는 것이 '달'인지 '해'인지 모른다는 것이다. 때문에 '~~한 타입의 포인터' 이다. 라고 선언해..