CPU(Central Processing Unit)중앙 처리 장치로 

ALU, CU, Register로 구성되어 있다.

1) ALU - 산술(Arithmetic) 논리(logic) 장치

   산술연산은 + - * / 등의 연산을 계산하며 논리연산은 AND OR 등의 연산을 계산한다.



2) CU - 제어(Control) 장치

   명령어를 해독(Decode)하여 명령어를 실행(Execute)하는 역할을 한다. 

   산술논리장치의 계산을 시작하고 끝내는 역할을 한다. 핵심 유닛이라고도 부른다.



3) Register

 a. 메모리 기능 

    - 기억한다. 즉 임시 저장 장소이다.

 b. 제어(Control) 장치 기능

     - 레지스터의 데이터가 cpu를 제어 하기도 한다.

 c. 외부 연결 기능


'C언어' 카테고리의 다른 글

201403112 도스에서 ftp사용하기  (0) 2014.03.12
20140310(2) 비교연산자  (0) 2014.03.11
20140310(2) C에서 소수점의 표현  (0) 2014.03.10
20140310 scanf  (0) 2014.03.10
20140307 변수와 연산자  (0) 2014.03.07
by 날라차숑 2014. 3. 11. 16:45


위 표는 메모리에 저장되는 값이다.

메모리 저장방법은 설명을 통해서 알아본다. 

6.25를 저장해 봅시다.

110.01 여기서 무조건 1.1001로 만들어버린다.

그렇다면 수식이 1.1001 x 2²이과 똑같다. 여기서 2승이 지수이고 +127이 해서 129가 지수부이다. 129를 이진수로 지수부에 들어가는거고 1.1001 이 빨간 부분이 이진수로 가수부에 들어가게 된다.

1110.01로 해보자.

1.11001 x 2³ 3+127이니까 130이 지수부 나머지 11001이 가수부가 된다.

'C언어' 카테고리의 다른 글

20140310(2) 비교연산자  (0) 2014.03.11
20140310 CPU 3대 구성요소  (0) 2014.03.11
20140310 scanf  (0) 2014.03.10
20140307 변수와 연산자  (0) 2014.03.07
20140306(2) C언어 변수의 이해  (0) 2014.03.06
by 날라차숑 2014. 3. 10. 17:37

예제1

#include <stdio.h>



int main()

{

  int iNum;

  scanf("%d"&iNum);//&주소 연산자 scanf에는 &을 붙인다. 이유는 다음에

  

  printf("입력한 값은?:%d입니다.\n", iNum);  



  return 0;

}




예제2

#include <stdio.h>



int main()

{

  int iNum1;

  int iNum2;

  int iNum3;

  int iResult;



  printf("세개의 정수를 입력하시오.\n");

  scanf("%d %d %d"&iNum1, &iNum2, &iNum3);

  iResult = (iNum1-iNum2)*(iNum2+iNum3)*(iNum3%iNum1);

  printf("(%d-%d)*(%d+%d)*(%d%%%d)의연산결과는 %d입니다.\n", iNum1, iNum2, 

  iNum2 ,iNum3 ,iNum3, iNum1 ,iResult);  // %표시는 %% 두개를 넣어야 %표시가 생긴다.



  return 0;

}





예제3

#include <stdio.h>



int main()

{

  int iNum1=0xa7//16진수를 쓸때 

  int iNum2=0x43//16진수

  int iNum3=032;  //8진수

  int iNum4=024;  //8진수



  printf("0xa7의 10진수 정수 값: %d \n", iNum1);

  printf("0x43의 10진수 정수 값: %d \n", iNum2);

  printf("0x0 의 10진수 정수 값: %d \n", iNum3);

  printf("024 의 10진수 정수 값: %d \n", iNum4);



  printf("%d-%d=%d \n", iNum1, iNum2, iNum1-iNum2);

  printf("%d-%d=%d \n", iNum3, iNum4, iNum1-iNum2);





  return 0;

}





예제4

#include <stdio.h>

int main()
{
  float fNum;
  fNum = 3.0/2//실수로 나눠야 실수로 나눠짐 둘다 정수로 만들면 정수나눗셈이 된다.
   //하나의 실수로 나누거나 두개의 실수로 나누면 된다.
  printf("%f\n", fNum);
  return 0;
}

'C언어' 카테고리의 다른 글

20140310 CPU 3대 구성요소  (0) 2014.03.11
20140310(2) C에서 소수점의 표현  (0) 2014.03.10
20140307 변수와 연산자  (0) 2014.03.07
20140306(2) C언어 변수의 이해  (0) 2014.03.06
20140306 C언어 함수의 기본적인 이해  (0) 2014.03.06
by 날라차숑 2014. 3. 10. 17:18


2의 보수법 (1byte로 정수 나타내기)
#include <stdio.h>

int main()
{
  /* unsigned */ char CNum; //unsigned양수
  CNum=127;
  printf("%d\n", CNum);
  CNum=128;
  printf("%d\n", CNum);
  CNum=129;
  printf("%d\n", CNum);
  CNum=255;
  printf("%d\n", CNum);
  return 0;
}
/* 수의범위 : 2의보수법으로 char는 정수 -128부터 127까지 사용할수있다.
              하지만 char앞에 unsigned을 사용하면 양수만 0에서 255까지 사용할수 있다.

   2의보수 0000 0010에 반대값 적기
   (반대값)1111 1101 1의보수 상태가 된다. 여기서 +1만 더해주면 2의보수가 된다.

           1111 1101(+1)
          =1111 1111       실제 기억값은 255 출력값은 -1
*/







산술연산자
#include <stdio.h>

int main()
{
  int iNum1;
  int iNum2;
  iNum1 = 3;
  iNum2 = 7;

  iResult1=iNum1/iNum2; 
  iResult2=iNum1%iNum2; 
  printf("%d(/)%d의 값은 %d이다.\n", iNum1 ,iNum2 ,iResult1); //산술연산자(/)는 몫을 나타낸다
  printf("%d(%)%d의 값은 %d이다.\n", iNum1 ,iNum2 ,iResult1); //산술연산자(%)나머지를 나타낸다.
  return 0;
}





증감연산자
#include <stdio.h>

int main()
{
  int iNum = 1;
  int iVal;
  iVal=++iNum; 
  printf("%d\n", iNum);
  printf("%d\n", iVal);
  iVal=iNum++; //++iNum는 연산먼저 iNum++ 대입먼저 
  printf("%d\n", iNum);
  printf("%d\n", iVal);
//증감연산자를 쓸때 단독으로 쓰면 결과는같다.    
  return 0;
}



관계연산자 논리연산자 연산자 순위
#include <stdio.h>

int main()
{
  int iNum1;
  int iNum2;
  int iNum3;
  int iNum4;
  int iNum5;
  int iNum6;
  int iNum7;
  int iNum8;
  int iNum9;
  int iNum10;

  iNum1=6>5//참
  iNum2=6>7//거짓
  iNum3=7==6//7과6이 같은가? 
  iNum4=!1;  //NOT 참이면 거짓
  iNum5=7!=6// 7과6이 다르면 참
  iNum6=7<=7//7과 7이 같거나 작은가? 
  iNum7=-7&&6//&&AND 연산우선순위 - > && > =
  iNum8=7||0//||OR 
  iNum9=100;
  iNum10=7||(++iNum9); // ++iNum9연산은 되지않는다. 앞항이 무조건 참이므로 뒷항은
 연산하지 않는다. 그래서 iNum9는 ++가 있음에도 값이 그대로다.
 


  printf("[iNum1]:[%d]\n", iNum1);
  printf("[iNum2]:[%d]\n", iNum2);
  printf("[iNum3]:[%d]\n", iNum3);
  printf("[iNum4]:[%d]\n", iNum4);
  printf("[iNum5]:[%d]\n", iNum5);
  printf("[iNum6]:[%d]\n", iNum6);
  printf("[iNum7]:[%d]\n", iNum7);
  printf("[iNum8]:[%d]\n", iNum8);
  printf("[iNum9]:[%d]\n", iNum9);
  printf("[iNum10]:[%d]\n", iNum10);

  return 0;
}


by 날라차숑 2014. 3. 7. 17:23

#include <stdio.h>

int main()
{
  int number1; //변수선언
  int number2; //변수선언
  number1=3;   //변수 number1에 3대입
  number2=4;   //변수 number2에 4대입
  printf("number1=[%d]\n", number1);  //출력  
  printf("number2=[%d]\n\n", number2);//출력  

  return 0;

}

결과값은 

3

4

이 나온다. 



여기에다 number2를 number1에다가 대입해보자.

#include <stdio.h>

int main()
{
  int number1; 
  int number2; 
  number1=3;   
  number2=4;
  number1=number2; /*number2를 number1에다가 대입  number1,number2는 4의 데이터를 
*/가지고있슴.


  printf("number1=[%d]\n", number1);   
  printf("number1=[%d]\n", number2);    
  
  return 0;
}
결과값은

4


로 나온다.
#.중괄호 내에 변수를 선언 할 경우 변수의 선언문은 중괄호 앞에 위치해야한다
다시말해 
int
 number3; 을 더 선언하고 싶은데  return 0; 바로위에다가 선언해버리면
컴파일 오류!





'C언어' 카테고리의 다른 글

20140310 scanf  (0) 2014.03.10
20140307 변수와 연산자  (0) 2014.03.07
20140306 C언어 함수의 기본적인 이해  (0) 2014.03.06
20140305 리눅스 ls 정보 보는법 & vi설정  (0) 2014.03.05
20140305 C언어 문법의 시작  (0) 2014.03.05
by 날라차숑 2014. 3. 6. 17:17

#include <stdio.h>

int main()
{
  printf("Hello Everybody\n");
  printf("%d\n"1234); // 따옴표를 출력하고 나서 10진수를 출력해라
  /* x, o, d 로바꾸면 각각 16진수 8진수 10진수로 바뀜 x는 대문자로 주로 사용 
   16진수를 입력하고 싶으면 %x를 쓰면되는데 %X(대문자)를 쓰면 16진수도 대문자로 바뀐다.
  */ 1234 16진수 결과값 (%x=4d2) (%X=4D2)로 나온다. 

  printf("[%d] [%d]\n",10 ,20);   
  return 0;


'C언어' 카테고리의 다른 글

20140307 변수와 연산자  (0) 2014.03.07
20140306(2) C언어 변수의 이해  (0) 2014.03.06
20140305 리눅스 ls 정보 보는법 & vi설정  (0) 2014.03.05
20140305 C언어 문법의 시작  (0) 2014.03.05
20140304(2) VC 준비 (path설정)  (0) 2014.03.04
by 날라차숑 2014. 3. 6. 12:33







vi .vimrc =>set number로 들어간후 설정





'C언어' 카테고리의 다른 글

20140306(2) C언어 변수의 이해  (0) 2014.03.06
20140306 C언어 함수의 기본적인 이해  (0) 2014.03.06
20140305 C언어 문법의 시작  (0) 2014.03.05
20140304(2) VC 준비 (path설정)  (0) 2014.03.04
20140304 VI편집기  (0) 2014.03.04
by 날라차숑 2014. 3. 5. 17:37

윈도우에서 간단히 main.c 생성하기! 도스창에서 notepad main.c를 입력하세요.

#include <stdio.h> //전처리 단계//


int main(void) //C단계 void:피하다,없다(여기에서는 없다란뜻)//

{//중괄호는 int main(void)와 세트//

printf("Hello world! \n");

return 0;

}

*/main 은 entry point(진입점, 시작점) 일의 목록은 프로그래밍//

int와 return 0; 은 연관이 있다.


return 0; 는 0 이라는 값을 반환하라는 의미이고

return 1; 은 1 이라는 값을 반환하라는 뜻입니다.


return 은 함수의 어떤 곳에서도 위치할 수 있는데, return 이 실행되는 즉시 그 함수는 무조건 실행이 종료됩니다.


즉, 현재의 함수에서 빠져 나가라는 의미입니다.


C:\Program Files\Microsoft Visual Studio 10.0\VC\include //stdio.h가 포함된 폴더(윈도우)//

/usr/include //stdio.h가 포함된 폴더(리눅스)

도스창또는 리눅스에서 set은 환경변수를 보여준다/*

by 날라차숑 2014. 3. 5. 17:01

C언어 Path 설정

윈도우키 +  pause/break 키를 누르면 시스템 등록 정보가 뜬다 아래의 고급 => 환경변수로 들어갑니다.

ADMIN에서 path 편집

위주소로 붙여넣기 중간에 연결은 세미콜론(;)으로 연결한다


여기도 path 뒤에 넣어준다.




stdio.h를 찾아라!

찾으면 INCLUDE 대문자 변수값에다가 경로를 복사해준다.





libcmt.lib + kernel32.lib 파일은 변수이름 INCLUDE와 같이 LIB 에다가 넣어준다.

준비완료


종합정리

cl.exe => mspdb100.dll => stdio => libcmt.lib => kernel32.lib

(        path                )  (include)(      lib                        )



추가로

#.어셈블파일 생성 

예) cl main.c /FA

전처리파일 생성

예) cl main.c /P

by 날라차숑 2014. 3. 4. 17:03


기본설정 printf("다시만나요\n");을 빼고


컴파일및 실행과정


by 날라차숑 2014. 3. 4. 16:40