'2013/06'에 해당되는 글 6건

  1. 2013.06.26 비트연산// 정해진곳 비트만 바꾸기
  2. 2013.06.24 하드웨어 레퍼런스 (2)
  3. 2013.06.24 cygwin이란!
  4. 2013.06.13 C언어 노트
  5. 2013.06.07 에일맥주(ale)
  6. 2013.06.05 백과사전

void USER_MAIN(void)
{
  /*
  signed int rGPGCON=0x12345678;
  signed int a=0xfffff0ff;
  signed int b=0x00000a00;
  signed int result;
  signed int result1;

  result=rGPGCON & a;
  Uart_Printf("%x \n", result);
  result1=result | b;
  Uart_Printf("%x \n", result1);
  */
 
  signed int rGPGCON=0x12345678;
  signed int b=0x00000a00;
  rGPGCON=(rGPGCON&(~(0x3<<10))) | b;
  Uart_Printf("%x \n", rGPGCON);
  //rGPGCON=rGPGCON | b;
  //Uart_Printf("%x \n", rGPGCON);  

}

 

주석따윈 달지 않겠다. 왜냐고? 너무 쉬우니까.
 

 

'백과사전' 카테고리의 다른 글

포인터와 배열을 완전히 이해했다면!  (0) 2013.07.04
매크로 함수  (0) 2013.07.03
비트연산// 정해진곳 비트만 바꾸기  (0) 2013.06.26
하드웨어 레퍼런스  (2) 2013.06.24
cygwin이란!  (0) 2013.06.24
C언어 노트  (0) 2013.06.13
Posted by 아크k

http://gamma0burst.tistory.com/374

 

하드웨어 참고자료, 심심할때 읽으면 잡지식을 늘리는데 좋은듯..

'백과사전' 카테고리의 다른 글

매크로 함수  (0) 2013.07.03
비트연산// 정해진곳 비트만 바꾸기  (0) 2013.06.26
하드웨어 레퍼런스  (2) 2013.06.24
cygwin이란!  (0) 2013.06.24
C언어 노트  (0) 2013.06.13
에일맥주(ale)  (0) 2013.06.07
Posted by 아크k

cygwin이란!

백과사전 2013.06.24 16:41

 

 

간단히 말해서 윈도우 환경에서 리눅스 환경을 경험하도록 한다.

하지만 리눅스에서 하는게 당연 좋은거고 일종의 꼼수(?) 같은거라고 할까,

 

http://blog.naver.com/jwmoon74?Redirect=Log&logNo=100035621795 

이 링크를 따라가자~! 총 3페이지가 있으니 꼼꼼히 읽어보도록.

'백과사전' 카테고리의 다른 글

매크로 함수  (0) 2013.07.03
비트연산// 정해진곳 비트만 바꾸기  (0) 2013.06.26
하드웨어 레퍼런스  (2) 2013.06.24
cygwin이란!  (0) 2013.06.24
C언어 노트  (0) 2013.06.13
에일맥주(ale)  (0) 2013.06.07
Posted by 아크k

C언어 노트

백과사전 2013.06.13 14:27

specifier      identifier     modifier     =     initialize;

    int             A                []          =       10 ;

 

specifier      modifier    identifier      =     initialize;

    int              *              A            =       10 ;

 

 

modifier : *, [] , ()

 

 

 

주소와 주소의 연산은 갯수가 나오고

주소와 정수의 연산은 주소가 나온다.

 

reference ★★★★★

www.soen.kr 소프트웨어 각종참고 자료

http://itguru.tistory.com/18 c언어 예제!

http://cky5122.blog.me/80191912000 숭실대 컴터 11학번 조가희의 메이플 사이트가 아니라... c참고예제...

 

---------------------------------- c언어 단축키 ---------------------------------------------------------

 

Tab : 들여쓰기
Shift + Tab : 내어쓰기
Ctrl + Tab : 방금 전의 문서로

Alt + E + I : 프로젝트 내의 모든 파일에서 찾기

 

F2 : 설정된 북마크로 이동
F3 : 다음 찾기
F4 : 다음 에러메세지로 이동
F8 : 찾기에서 다음 항목으로 이동
F9 : 현재 커서위치에 BreakPoint를 설정/해제

Alt + F8 : 들여쓰기 자동 조정

 

Ctrl + 1 : IDD_DIALOG
Ctrl + 2 : IDR_MENU
Ctrl + 3 : IDC_CURSOR
Ctrl + 4 : IDI_ICON
Ctrl + 5 : IDB_Bitmap
Ctrl + 6 : IDR_ToolBar
Ctrl + 7 : IDR_Accelerator
Ctrl + 8 : String Table
Ctrl + 9 : VS Vesion Info

Ctrl + ] : 괄호 짝 찾기

 

Ctrl + A : 전체지정
Ctrl + B : 브레이크 포인트 관리 메뉴
Ctrl + C : 블럭을 복사. 만약 블럭이 없으면 커서가 있는 한 줄을 복사
Ctrl + F : 찾기
Ctrl + H : 찾아 바꾸기
Ctrl + L : 한 줄을 잘라내기
Ctrl + N : 새 프로젝트
Ctrl + U : 모두 소문자로

 

Ctrl + F2 : 북마크 설정
Ctrl + F5 : 실행
Ctrl + F7 : 컴파일

 

Ctrl + Shift + 8 : Tab은 ^로, 공백은 .으로 보여줌
Ctrl + Shift + U : 모두 대문자로
Ctrl + Shift + R : 매크로 기록
Ctrl + Shift + P : 매크로 실행
Ctrl + Shift + F8 : 열 블럭
Ctrl + Shift + F9 : 모든 브레이크 포인트 해제

 

Ctrl + Spacebar : 멤버목록 팝업창

--------------------------------------------------------------------------------------------------------

 

 

------------------------------ 엔디안(Endian) --------------------------------------------

msb : Most Significant Bit

lsb : Less Significant Bit

 

ex) int a=0x12 34 56 78

- little 엔디안

a[0x1000 0x1001 0x1002 0x1003]

 78 56 34 12

 

- big 엔디안

a[0x1000 0x1001 0x1002 0x1003]

12 34 56 78

 

그러니까 big 엔디안은 msb부터 순차적으로 저장된다고 알고 있자.

 

                                 0x1000     0x1001    0x1002   0x1003
Big Endian     dword       0x12       0x34      0x56     0x78                      
                      word       0x12       0x34                      
                       byte       0x12     

Little Endian  dword       0x78       0x56      0x34     0x12                     
                     word       0x34       0x12                      
                      byte       0x12   

 

 

------------------------------------------------------------------------------------------

 

 

 

 

 

------------------------------ 포인터 -----------------------------------------------------

포인터 : 주소값 저장, 주소를 저장하는 변수를 선언

int num=7;

int *pnum;

pnum = &num;

&연산자는 오른쪽에 등장하는 피연산자의 주소값을 반환하는 연산자이다.

따라서 num의 주소를 반환하여 pnum에 저장한다.

 

또 다른 예를 들면

 

int arr[5];

 

여기서 arr[0] : int형이다.

&arr[0] ; int* 를 나타낸다.

 

&연산자는 주소값을 나타내는 연산자이기때문!

 

arr == &arr[0]

전체 주소값은 배열의 첫번째 주소와 같다.

 

int *pa=&a;

 

pa는 인티져 포인터

&a는 a의 포인터

 

(int*)&a 는 a의 인티져 포인터

 

 

 

 

 

#include <stdio.h>


int main(void)
{

 int num = 3;
 int *ptr = &num;
 int c=10;

 printf("%d \n", num);
 printf("%d \n", *ptr);

 *ptr = 5;
 printf("%d \n", num);

 ptr = &c;
 printf("%d \n", *ptr);


 // *ptr = value값을 받아오고
 // ptr = 주소값을 받아온다.

}

 

 

 ----------------------------------------------------------------------------------------------

 

 

 

 

 

 

------------------------------ 배  열 -----------------------------------------------------

 

int arronedim[10]; // 길이가 10인 1차원 int형 배열

int arrtwodim[3][5]; // 가로 세로 길이가 3행 5열인 2차원 int형 배열

 

배열의 행열값은 0부터 시작한다. 00 01 02 10 11 12 ... 

선언하지 않은 초기값은 0으로 채워진다.

int arr[][5] = {1,2}; <-- 행만 생략가능

 

배열은 복사를 하여 스택에 쌓아두고

포인터는 주소값을 가져다가 쓴다.

 

 

int * <-- 포인터 타입

int [3] <-- 배열 타입

 

같은타입

int *[3]

int **

 

a[]

*a

 

a[][]
*a[]

(*a)[]

 

*a[]

*(*a)

**a

 

 

ex)

int A[2][3];

A == &A[0]

따라서 int[2][3] == int (*)[3]

 

int *B[4];

B == &B[0]

따라서 int *[4] == int *(*)

 

int *C[2][3];

C == &C[0]

따라서 int*[2][3] == int *(*)[3]

 

배열안에 인티저, 배열, 포인터는 들어가지만 함수는 넣을수 없다.

 

ex)

int *A[2][3];

A == &A[0]

int *[2][3] == int *(*)[3]

a변수만 꺼내보면 a의 첫번째 배열의 주소값까지 가진다.

&는 (*)로 변하고 없는 배열을 작성

 

 

 

A[0] == &A[0][0]

int *[3] == int *(*)

 

a변수의 첫번째 배열만 꺼내보면 a의 두번째 배열의 주소값까지 가진다.

&는 (*)로 변하고 없는 배열을 작성하는데 없으니 안적음.

 

 

 

#include <stdio.h>

void SwapIntPtr(int *p1, int *p2)
{
 int * temp=p1;
 p1=p2;
 p2=temp;
}

int main(void)
{
 int num1=10, num2=20;
 int *ptr1, *ptr2;
 ptr1=&num1, ptr2=&num2;
 printf("*ptr1, *ptr2: %d %d \n", *ptr1, *ptr2);
 
 SwapIntPtr(ptr1, ptr2);
 printf("*ptr1, *ptr2: %d %d \n", *ptr1, *ptr2);
 return 0;
}

 

 

 

 

#include <stdio.h>

void SwapIntPtr(int **dp1, int **dp2)
{
 int *temp = *dp1;
 *dp1 = *dp2;
 *dp2 = temp;
}

int main(void)
{
 int num1=10, num2=20;
 int *ptr1, *ptr2;
 ptr1=&num1, ptr2=&num2;
 printf("*ptr1, *ptr2: %d %d \n", *ptr1, *ptr2);
 
 SwapIntPtr(&ptr1, &ptr2);
 printf("*ptr1, *ptr2: %d %d \n", *ptr1, *ptr2);
 return 0;
}

 

 

 

 

 

 

 

 

 

 

함수의 인자로 받아지는 포인터

void f_arr(int a[ ])

이러한 배열은 사실 배열이 아니라 포인터다.

int a[ ] = int *a = int a[1000]

sizeof 해보면 전부 4가 나온다.

 

 

-------해석 방법(?)--------------

int***arr4[3][5];
int***(*parr4)[5] = arr4; // arr4를 받고 싶으면 arr4의 포인터 배열에서 arr4[3]을 (*parr4)로 바꾸면 됨

 

arr[1][0][1];

== *(*(*arr+1)+0)+1);

== *(0[1[arr]]+1);

 

----------------------------------

 

call by reference 주소값을 받아오는거

call by value 값을 받아오는거

 

 

 

 

 

--------------------------------------- 함수 포인터 -----------------------------------------------------

 

 

#include <stdio.h>
 

int add(int a, int b) // add함수
{

 return a+b;
}

int sub(int c, int d) // sub함수
{

 return c-d;
}

int main(void)
{
 
 int (*arr[])(int, int)={add, sub}; // 배열로 함수 포인터를 초기화 (*arr[0])에는 add를 (*arr[0])에는 sub을 초기화

 printf("%d %d %d \n", arr[0](1,2), (*arr[0])(1,2), (arr[0])(1,2));

//*이 있던없던 값이 똑같다. 해석하기 어렵게하기 위해 이런 뻥카를 쓰기도 한다.
 return 0;

}

 

 

 

함수 호출 방법

() <--- 함수호출 연산자

함수를 호출하거나, 함수의 주소를 불러오면 함수는 실행된다.

 

void main(void) 인 경우 main(); // void는 쓰지않고 맨앞에 형을 쓰지 않는다.

void (*f(void))(void) 인 경우  (*f())();

또 중요한건 f()();도 된다.

함수와 관련된 *은 의미없다.

--------------------------------------------------------------------------------------------------------

 

 

/* 구조체 ///////////////////////////////////////////////////////////////////////////////////////////////

. 멤버참조 연산자

구조체 struct 각각의 주소값(메모리값)을 가지고 있고

공용체 union 주소값(메모리값)을 공용한다(똑같은 주소값을 공유해서 같이쓴다)

 

 

 

 

//////////////////////////////////////////링크드 리스트//////////////////////////////////////////////////

#include <stdio.h>

struct point
{
 int xpos;
 int ypos;
 struct point * ptr;

};

int main(void)
{
 struct point pos1={1, 1};
 struct point pos2={2, 2};
 struct point pos3={3, 3};

 pos1.ptr = &pos2; // pos1.ptr이 pos2의 주소를 가리키고 있고
 pos2.ptr = &pos3; // pos2.ptr이 pos3의 주소를 가리키고 있고
 pos3.ptr = &pos1; // pos3.ptr이 pos1의 주소를 가리키고 있다.

 /* pos1.ptr->ptr->ypos=10; */ 아래와 같은말.
 (*(*pos1.ptr).ptr).ypos=10; //pos1.ptr에서 pos2.ptr로 가서 pos3의 ypos를 10으로 정한다.

 printf("%d \n", pos3.ypos);
 return 0;
}

 

 

///////////////이거는 알겠넹/////////////////////////////////////////////////////////////////////////////

 

 

/* 공용체 ///////////////////////////////////////////////////////////////////////////////////////////////

union

메모리를 공유한다

엔디언 값이 혼동되니 주의.

 

*///////////////////////////////////////////////////////////////////////////////////////////////////////

 

/* 기억 클래스 /////////////////////////////////////////////////////////////////////////////////////////

 

1. auto 기억류

 

특징: - 함수안이나 블럭안에서 선언할수 있으며 해당 함수나

블럭을 벗어나게 되면 해당 변수가 소멸된다

- 실행시에 기억장소가 준비된다.

- 변수를 선언하면 쓰레기 값을 기억하게 된다.

 

 

 

2. register 기억류

특징:  - 기억장소가 CPU내의 register에 확보되는 것만 다르고 대부분의 사항이 auto기억류와 동일하다.
         - 많은 수의 변수를 register로 선언할 수 없다.( register갯수의 한계성 때문)
         - &(주소연산자)연산자를 사용할수 없다.
         - 작고 빠른 프로그램 제작시 종종 사용한다.

 

 

3. static 기억류

특징:  - 컴파일러시에 기억장소가 확보된다.
         - 전역 또는 지역변수로도 사용이 가능하다.
         - 함수밖에서 선언하면 선언 이후 언제나 사용가능한 전역변수가 된다.
         - 함수나 블럭 내에서 선언하면 선언된 함수나 블럭내에서만 사용가능하다. 하지만
            함수나 블럭을 벗어나더라도 auto, register와는 달리 기억장소는 소멸되지 않는다.
 
 
 
4. extern 기억류

특징:  - 프로그램간에 변수를 공유할 목적으로 선언한다.
         - 프로그램을 묶어 프로젝트로 만들어야 의미가 있다.
         - 단일 프로그램에서만 사용하면 static 기억류와 별로 다를게 없다.
         - 선언시 초기화를 해야 하며 단일 프로그램에서 사용시에는 함수밖에서만 선언이 가능하다.

 

 

 

'백과사전' 카테고리의 다른 글

매크로 함수  (0) 2013.07.03
비트연산// 정해진곳 비트만 바꾸기  (0) 2013.06.26
하드웨어 레퍼런스  (2) 2013.06.24
cygwin이란!  (0) 2013.06.24
C언어 노트  (0) 2013.06.13
에일맥주(ale)  (0) 2013.06.07
Posted by 아크k

에일맥주(ale)

백과사전 2013.06.07 01:19

에일은 상면 발효와 실내온도와 가까운 18-21도 정도에서 발효되는 맥주이고..

라거는 효모에 의해 낮은 온도(2-10도)에서 긴 시간(길게는 몇개월)동안 발효 되는 맥주입니다.

에일맥주 중에서 특히나 미묘하고, 개성적이며, 독특하고, 때로는 단정적인 스타일이다.
맥주의 스타일을 구분할 때 에일은 라거에 상대적인 개념으로 굉장히 광범위한 의미를 지니게 된다.
즉, 맥주의 발효과정을 크게 둘로 나눠 그 중 한가지는 에일, 다른 한가지는 라거로 나누어 맥주를 아주 큰 범위로 두 종류로 나눈 개념이 에일이라 보면 이해하기 편할 것이다.
물론 에일의 범주중에서 그 개성이 강하고 독특한 스타일 때문에 이미 독자적인 영역을 가진 맥주들은 다른 이름으로 그 스타일을 분류할 수도 있지만 일단은 넓은 범위의 에일에 대한 이해가 있으면 보다 쉽게 맥주의 스타일을 구분할 수 있다.
맥주의 스타일을 나눌 때 가장 큰 차이는 바로 발효시의 차이를 보고 있다.
크게 상면발효(Top-fermention)와 하면발효(Bottom-fermention)로 나누어 상면발효방식으로 양조된 맥주에일, 하면발효방식으로 양조된 맥주를 라거로 나누는 것이다.
따라서 스타우트나 포터, 램빅, 비터에일, 스트롱 골든 에일, 인디아 패일 에일 등 굉장히 다양한 상면발효방식의 맥주는 모두 에일의 한 범주로 생각하면 된다.
이렇게 넓은 범위의 에일에 대한 개념을 세우고 그 여러 갈래의 독특한 맥주에 대한 이해를 하면 맥주 스타일로 생기는 혼돈을 피할 수 있을 것이다.
그러면 에일이 가지는 전체적인 특징에 대해 간단히 알아보자.
에일은 미묘하고, 굉장히 독특하며, 때로는 단정적인 특징을 가지는 맥주이다.
전통적인 양조방식인 상면발효방식, 즉 약15-25도 사이의 온도에서 발효된다.
에일 이스트는 위의 온도에서 가장 활발한 발효 작용을 하며 발효시 양조용기의 위쪽에 떠 올라 발효되기 때문에 상면발효방식이라 한다.
에일 이스트는 발효 진행중에 곧잘 희미한 오렌지, 배, 딸기 등 과일의 향과 맛을 내는 것으로 알려져 있다.
우리가 흔히 에일 맥주에 과일을 첨가했다고 생각하는 오해는 여기에서 비롯된다.
그러나 실제로 대부분의 에일에는 과일을 첨가하지 않는다.
발효 과정에서 자연스레 생성된 맛이다.
에일은 그 맛과 개성이 강하기 때문에 필스너 타입의 라거에 비해 소수의 사람들에게 어필하는 경향이 강하다.
전체적인 에일의 범주는 넓지만 각각 제품의 특성이 매우 강하기 때문에 하나의 제품당 애호가들을 따지면 필스너에 비해 폭이 좁다.
필스너 중에서도 개성이 강한 맥주들이 있기는 하지만 은은한 홉향과 유사한 맛으로 광범위하게 사랑을 받는 필스너 타입의 맥주에 비해 에일은 분명 그 한계가 있다.
즉, 같은 종류의 필스너 타입의 맥주라면 사실상 미세한 맛의 차이가 날 뿐이지만 에일은 같은 종류의 에일이라 하더라도 맛의 차이가 매우 크기 때문에 하나의 브랜드를 좋아하는 사람은 쉽게 다른 브랜드를 마시지 못하게 되는 것이다.
이와 같은 특징 때문에 맥주 전문가들은 맥주를 마시는 과정을 필스너 타입에서 에일로 가는 과정으로 여기기도 한다.
일반적인 필스너에서 자신의 입맛에 딱 맞는 에일을 찾는 과정을 맥주를 즐기는 과정으로 여기는 것이다.
국내에도 세인트 앤드류 에일과 맥컬럼 스타우트 에일이 보급되기 시작했다.

'백과사전' 카테고리의 다른 글

매크로 함수  (0) 2013.07.03
비트연산// 정해진곳 비트만 바꾸기  (0) 2013.06.26
하드웨어 레퍼런스  (2) 2013.06.24
cygwin이란!  (0) 2013.06.24
C언어 노트  (0) 2013.06.13
에일맥주(ale)  (0) 2013.06.07
Posted by 아크k

백과사전

생각 2013.06.05 15:20

내가 아는것도 시간이 지나면 잊혀진다.

그래서 생각해낸게 메모인데

메모도 어디다 해뒀는지 모르면 찾을 수 없고

그거 뒤지는데도 한참 걸린다.

따라서 여기다가 가나다순으로 내 지적호기심들을 정리해볼까 한다.

잘될진 모르지만 시도를 해보는건 좋은것이 아닌가!

무더운 여름날 작성..

'생각' 카테고리의 다른 글

3/4분기 정리좀..  (1) 2013.07.19
임베디드에 관해  (0) 2013.07.11
백과사전  (0) 2013.06.05
가을  (1) 2012.10.11
평탄하지 않네...  (0) 2012.05.04
이별.  (0) 2012.04.03
Posted by 아크k