본문 바로가기

프로그래밍/C++11

비트연산 정리 메모리가 부족한 환경이나, 좀 더 나은 속도, 짧은 코딩을 하기 위해서 비트연산자를 사용하게 됩니다. 하지만 그와 반대로 대부분 코드를 이해하기가 더 힘들어지게 됩니다. 그러나 네이밍을 잘 한다면, 좀 더 보기가 나을 것 입니다. 비트연산자 & : AND | : OR ^ : XOR ~ : NOT 아래 방법의 하나의 방법일 뿐 입니다. 참고는 하셔도 되지만, 성능이 정확도는 장담하지 않습니다. 좀 더 나은 방법들을 알고 계신분들은 댓글로 부탁드립니다. ※ 참고사항 LED 레지스터는 1byte이고, 각 비트가 하나의 LED로 가정합니다. 그러므로 LED 개수는 8개 미만 입니다. 의미를 두기 위해 unsigned char로 선언하였습니다. 마이크로프로그래밍에서는 P[Num]과 동일하다고 생각하시면 됩니다. .. 2011. 11. 21.
printf 출력 서식 원문 : http://devanix.tistory.com/283 "%[parameter][flags][width][.precision][length]type" Parameter Character Description n$ 파라미터 지정 This is a POSIX extension and not in C99. Example: printf("%2$d %1$#x %1$d",16,17) produces "17 0x10 16" Flags Character Description + 양수 '+', 음수 '-' 기호 출력. (디폴트 : 아무것도 표시 안함) - 좌측 정렬 # 8진수, 16진수 출력시 각각 0과 0x를, 실수의 경우 소수점 이하 0을 출력 ' '공백 출력할 크기가 0보다 클 때 수의 앞에 빈 칸 하나 .. 2011. 10. 18.
C 언어 레퍼런스 - localtime 함수 링크 : http://itguru.tistory.com/120 localtime #include // C++ 에서는 struct tm * localtime ( const time_t * timer ); time_t 값을 이용하여 지역 시간을 기준으로 tm 구조체를 초기화한다. timer 가 가리키는 time_t 형 변수의 값을 이용하여 tm 구조체의 멤버들을 초기화 한 뒤 이를 가리키는 포인터를 리턴한다. 참고적으로 현재 시간을 구해와야 하는 경우 십중 팔구 이 함수를 사용하게 된다. 현재 시각을 구해오는 가장 간단한 방법 time_t rawtime; struct tm * timeinfo; time ( &rawtime ); timeinfo = localtime ( &rawtime ); 를 통해 timei.. 2011. 10. 13.
[System Call] 메모리 맵 - mmap(), munmap(), msync() * 메모리 맵 - mmap() ; 파일(리눅스에서는 디바이스도 파일로 처리하므로 디바이스도 메모리 맵으로 연결 가능)을 처리하기 위해서는 보통 저수준으로는 파일 디스크립터를 이용하고, 고수준으로 접근하기 위해서는 파일 구조체 포인터를 이용하여 접근하게 된다. 하지만 이런 방식을 이용하면 버퍼를 거쳐서 실제 입출력을 하게된다. 하지만 mmap()을 이용하여 메모리 맵 방식으로 파일을 연결하게 되면 버퍼를 이용하는 것이 아니라 '페이지(page)'를 이용하여 데이터 처리가 가능해진다. 상대적으로 크기가 작은 버퍼에 비해 보통 4KB의 크기를 가지는 페이지를 이용하면 처리 가능한 크기와 처리 속도가 향상된다. 그렇기 때문에 데이터 크기가 크거나 빠른 처리를 해야하는 경우 메모리 맵 방식을 종종 사용하게된다. .. 2011. 3. 4.
[C++] 상속 두번째, 세가지 형태의 상속 (private, protected, public) 링크 : http://pacs.tistory.com/24 다음과 같이 상속(Inheritance)의 경우를 보자 view plaincopy to clipboardprint? class A : public B { }; class A : public B { }; B클래스를 public으로 상속하겠다는 의미로 우리들이 일반적으로 많이 사용하는 class A : [상속형태] B 형태를 가지고 있다. 기본적으로 기본 클래스는 파생 클래스에 의해 상속되어지는 과정에서 접근 권한이 변경이 된다. 그 상속 형태에 따라 멤버들을 상속하는데 있어서 접근권한을 무엇으로 변경할 것이냐 하는 얘기이다. 아래는 기본 클래스와 상속의 형태에 따른 파생클래스에서의 기본클래스로의 접근범위를 표로 나타낸것이다. 일반적으로 public을.. 2011. 3. 3.
매크로 #, ##, #@ ## 연산자 ## 연산자를 사용해서 토큰을 합성해서 만들어 낼 수 있다. ##은 합치기 연산자 이다. ex) #define MACRO_APPEND(str1, str2) printf("%s\n", str1##str2) # 연산자 # 연산자는 전달된 인자를 문자열로 변환시킨다. ex) #define MACRO_STRING(str) printf("%s\n", #str); #@ 연산자 #@ 연산자는 전달된 인자를 문자로 변환시킨다. 미리 정의된 매크로 __STDC__ : 컴파일러가 ANSI C 표준을 따를 경우 1로 정의되며 그렇지 않을 경우 정의되지 않는다. C++로 컴파일할 때는 이 매크로가 없다. __FILE__ : 현재 소스 파일의 완전 경로이다. __LINE__ : 파일명 __DATE.. 2010. 12. 21.