본문 바로가기

공부/C언어

(C) C언어에 대한 기본적인 지식 1

* 본 게시물과 앞으로 C언어 카테고리에 올라갈 모든 게시물은 개인적인 공부 용도로 올리는 것이며, 개념에 대한 오류와 비효율적인 코드들이 있을 수 있습니다.

* 제가 모든 게시물을 공개로 올리는 이유는 학교 컴퓨터와 같은 공공장소에 있는 PC에 로그인 없이 바로바로 게시물을 보기 위해서 입니다.

* 기본적으로 게시물은 교수님의 강의자료를 기초로 두고 있으며, 이외에 '윤성우 열혈 C 프로그래밍'이라는 책과 각종 위키백과, 제타위키, 구글링하면 나오는 여러 블로그를 참고할 것입니다. 저작권 문제가 있을시 hjl3066@gmail.com으로 연락해주시면 빠르게 조치하겠습니다.

* 블로그의 모든 게시물은 PC 환경에 최적화되어 있습니다.


컴퓨터의 자료표현

컴퓨터는 인간과 달리 10진수가 아닌 2진수를 사용하여 정보를 저장한다.

2진수(binary number)는 1010, 100011, 110, 00110과 같이 사용할 수 있는 숫자가

0과 1로 2개밖에 없다.

컴퓨터는 전기적 소자인 트랜지스터로 자료값을 저장하므로 전기가 흐르지 않는(off)와

전기가 흐르는(on) 두 가지 신호로 자료를 처리한다. 그래서 전기가 흐르지 않을 때는

'거짓'을 의미하는 '0', 전기가 흐를 때는 '참'을 의미하는 '1'로 표현되기에 2진수 체계를

사용한다.

  • 비트는 0 또는 1의 정보를 저장하는 정보의 최소단위이다.
  • 바이트는 8비트로 총 256가지의 정보를 저장할 수 있는 저장공간이다.
  • 일반적으로 워드는 4바이트, 총 32비트로 구성된다.(시스템마다 워드의 크기가 다를 수 있음)
  • 컴퓨터 메모리의 주소 값은 1바이트당 하나의 주소가 할당되어 있다.(중요)

 

저장 용량

표기 단위 계산 바이트 수 계량 단위
B Byte 2^0 1
KB Kilo Byte 2^10 1,024
MB Mega Byte 2^20 1,048,576 백만
GB Giga Byte 2^30 1,073,741,824 십억
TB Tera Byte 2^40 1,099,511,627,776
PB Peta Byte 2^50 1,125,899,906,842,624 천조

 

  • 11000010에서 1(On) 또는 0(Off)가 1Bit이다.
  • 11000010 -> B 한 문자는 8bit 1Byte이다.
  • 1/2 페이지(1,000byte)는 1KB이다.
  • 책 1권(500페이지)는 1MB이다.
  • 저품질 영화 1편(약 700M)은 1GB이다.

 

진수와 수의 표현

  • 10진수: 0에서 9까지의 열 가지 수를 한 자리(digit)의 기본 단위로 하는 진법
  • 2진수: 0과 1의 조합으로 숫자를 표시하며, 컴퓨터의 자료 표현은 한 비트가
    두 가지의 표현이 가능하다.
  • 16진수: 0에서 9까지 그리고 A에서 F까지(소문자도 가능) 총 16개의 숫자나
    문자를 사용하여 표시하는 진수

아래의 간단한 2진수, 8진수, 16진수의 10진수로의 변환 예를 보자.

아래의 10진수를 2진수로 변환하는 예를 보자.

10진수 26을 2진수로 변환
10진수 0.625를 2진수로 변환

 

다음은 2진수, 8진수, 16진수간의 상호관계를 알아보자.

 

2의 음수 표현

2의 보수: 2진수의 음수 표현 방식 중 가장 많이 사용되는 방법.

MSB: 최상위비트. 보수 표현에서는 이 최상위비트가 부호를 나타내므로 부호비트

       라고도 부른다.

숫자 이진수(양수) 1의 보수 2의 보수
+1 0001 0001 0001
0 0000 0000
1111
1111
-1 0001 1110 1111
-2 0010 1101 1110
-3 0011 1100 1101
-4 0100 1011 1100
-5 0101 1010 1011
-6 0110 1001 1010
-7 0111 1000 1001
-8 1000 - 1000

     4비트 2진수의 1의 보수와 2의 보수

 

음수 2의 보수 계산 방법

n비트에서 -a의 2의 보수 계산 방법

 

방법1.

예를 들어 4비트로 -4를 표현해보자.

방법2.

  • 1단계: 양수를 2진수로 바꾼다.
  • 2단계: 1의 보수를 구한다.
  • 3단계: 1을 더한다.

예를 들어 4비트로 -4를 표현해보자.

  • 1단계: 양수 4를 4비트의 2진수로 바꾸면 0100이다.
  • 2단계: 4비트에서 비트를 각각 0은 1로, 1은 0으로 바꾼다. 그러면 1011이 된다.
  • 3단계: 4비트에서 1을 더한다. 1100.

방법3.

  • 1단계: 양수를 2진수로 바꾼다.
  • 2단계: 가장 오른쪽에 처음으로 나타나는 1까지는 그대로 놔둔다.
  • 3단계: 왼쪽의 나머지 비트는 모두 0은 1로, 1은 0으로 바꾼다.

예를 들어 4비트로 -4를 표현해보자.

참고

  • 1단계: 양수 4를 4비트의 2진수로 바꾸면 0100이다.
  • 2단계: 가장 오른쪽에 처음으로 나타나는 1까지인 100은 그대로 놔둔다.
  • 3단계: 나머지 비트인 0만을 1의 보수인 1로 바꾸면 1100이 나온다.

연습만 충분하다면 3번 방법이 가장 무난하고 편리하다.

 

문자와 코드 체계

문자 코드

  • n비트의 조합에 일정한 문자를 할당하여 지정한 것
  • 국제 표준 문자 코드에는 아스키코드, 엡시딕코드, 유니코드가 있다.

아스키 코드

  • ASCII(American Standard Code for Information Interchange)
  • 7비트를 사용하여 128개의 문자, 숫자, 특수문자 코드를 규정한다.
    • 실제로 한 문자는 8비트에 저장됨( 0(1비트) + 아스키코드(7비트) )
      ex) C -> 1000011, O -> 1001111, D -> 1000100, E -> 1000101
    • 영어 문자를 위한 코드 체계이다.