20140407 (반가산기 XOR없이, 회로도 최적화 공식, typedef, strlen, strcpy, strcat)

36일차

 

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

논리 회로

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

--- 반가산기 (Half Adder)

XOR 게이트가 없을 경우 

 실제)

 

 

 

 

 

--- 회로도 최적화 공식

 

 

 

 

 

----------

c 언어

----------

 

--- typedef

새로운 데이터 타입 정의

ex)

typedef unsigned int ui;

ui uiNum;

 

uiNum은 unsigned int 형으로 정의 된다.

전역영역에서 선언해 주는게 좋다.

 

 

--- strlen

#include <string.h>

size_t strlen(const char * s);

문자열 길이 리턴.

 

--- strcpy, strncpy

#include <string.h>

char * strcpy(char * dest, const char * src);

char * strncpy(char * dest, const char * src, size_t n);

dest에 src 의 내용을 (n만큼) 복사한다.

 

--- strcat, strncat

#include <string.h>

char * strcat(char * dest, const char * src);

char * strncat(char * dest, const char * src, size_t n);

dest뒤에 src를 (n만큼) 문자를 잇는다

 

 

 

 

 

 

 

 

 

 

설정

트랙백

댓글

20140404 (Adder, NOT, NAND, puts, fputs, gets, fgets, fflush)

35일차

 

 

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

반  가  산  기

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

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

--- NOT Gate

A    Y

1     0

0     1

 

--- NAND

NOT + AND

 

 

 

L L 에 연결해 본 것.

 

 

--- 가산기 ( Half Adder )

1비트 덧셈.

 

 

 

 

 A  B  S  C

 0   0  0   0

 

 A  B  S  C

 1   0  1   0

 0   1  1   0

 

 A  B  S  C

 1   1  0   1

 

 

 

 

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

문  자  열  입  출  력

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

 

--- puts, fputs

- int puts(const char * s)

- int fputs(const char * s, FILE * stream)

성공시 음수가 아닌 값, 실패시 EOF반환

끝에 자동으로 엔터를 친다.

 

--- gets, fgets

- char * gets(char * s)

- char * fgets(char * s, int n, FILE * stream)

성공시 *s 의 주소값 반환, 실패시 or 파일 마지막 도달시 NULL

엔터입력 포함.

fgets함수에서 int n 의 값은 받고 싶은 글자 + 1만큼

변수를 선언해야 한다.

 

!! 주의 !!

gets() 함수는 입력을 받으며 메모리를 침범할 수 있기때문에

사용을 자제해야한다.

gets 뿐만 아니라 scanf, read, strcpy, memcpy, ...등등 전부 위험한 함수다.

그래서 fgets 를 사용해야 한다!!!

 

--- fflush

버퍼를 비우는 함수

int fflush(FILE * stream)

fflush(stdin)  입력 버퍼 비움

fflush(stdout)  출력 버퍼 비움

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

설정

트랙백

댓글

20140403 (TTL, AND gate, putchar, fputc, getchar, fgetc)

34일차

 

 

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

디  지  털  회  로

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

--- 트랜지스터

- NPN : 소량의 입력 전류와 양의 전압을 Base에 인가하면 (Vb > Ve) Collector에서

Emitter로 다량의 전류가 흐를 수 있게 된다.

- PNP : 소량의 출력 전류와 음의 전압을 Base에 인가하면 (Vb < Ve) Emitter에서

Collector로 매우 다량의 전류가 흐를 수 있게 된다.

 

트랜지스터끼리 조합하여 논리회로를 구성함.

 

 

 

--- TTL (Transistor Transistor Logic)

주로 5V 사용.

논리회로 종류로 트랜지스터 트랜지스터 구조를 말한다.

74XX 시리즈로 유명해졌다.

 

- 실제 생김새

빨강색 글씨로 1,7,8,14의 의미는

옆에 가닥가닥 각각 번호이다.

14 13 12 11 10  9  8

1   2   3   4  5  6  7

빨강색으로 줄 친 부분이 이 칩의 모델명이다.

 

 데이터 시트 (AND Gate)

A, B로 입력

Y로 출력

 

 

--- 실습

- AND Gate

 

오른쪽 밑 부분 노란줄 두 개가 파란라인에 꽂혀있다.

A  B  Y

0   0  0     ( G : 0   ,   +  :  1   ,    1이 나오면 LED에 불이 들어옴)

 

A  B  Y

1  0   0 

 

A  B  Y

0   1  0 

 

A  B  Y

1  1   1 

 

 

 

 

 

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

C 언어

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

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

--- putchar, fputc

- int putchar(int c)

인자에 정수를 받아 한 문자만 아스키코드로 출력한다.

- int fputc(int c, FILE * stream)

인자에 정수를 받아 stream으로 한 문자만 아스키코드로 출력한다.

- 두 함수 리턴값은 출력된 문자(정수값)이고 에러시 EOF(-1)를 리턴.

 

--- getchar, fgetc

- int getchar(void)

한 문자만 입력 받는다.

- int fgetc(FILE * stream)

한 문자만 stream으로 부터 입력 받는다.

- 두 함수 리턴값은 입력된 문자(정수값)이고 에러시, 파일 끝에 도달시 EOF(-1)를 리턴.

 

ex) 예제

#include <stdio.h>

int MyPutchar(int);
int Mygetchar();

int main()
{
  int  iNum;

  iNum = MyPutchar('A');
  printf("\n%d \n", iNum);

  iNum = fputc('A', stderr);
  printf("\n%d \n", iNum);

  fprintf(stderr, "EOF : %d\n", EOF);

  iNum = Mygetchar();
  fflush(stdin);
  printf("%c \n", iNum);

  iNum = getchar();
  fflush(stdin);
  printf("%c \n", iNum);

  iNum = fgetc(stdin);
  printf("%c \n", iNum);

  return 0;
}

int MyPutchar(int iNum)
{
  return fputc(iNum, stdout);
}

int Mygetchar()
{
  return fgetc(stdin);
}

위의 예제를 보면

putchar, getchar는 제법 편리하고 꼬름하다는 것을 볼 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

설정

트랙백

댓글