데이터의 표현단위인 비트(Bit) 와 바이트(Byte)


비트는 컴퓨터가 표현하는 데이터의 최소단위로서 2진수 값 하나를 저장할 수 있는 메모리의 크기를 뜻하는 단위이다.

비트를 여덟개 묶으면 바이트라는 단위가 된다.


C언어는 10진수 이외에 8진수와 16진수의 데이터 표현도 허용한다.


ex)

int num1 =10; // 10진수를 이용한 초기화

int num2 = 0xA; //16진수를 이용한 초기화 ( 0x로 시작하면 16진수로 인식 )

int num3 = 012; //8진수를 이용한 초기화 ( 0로 시작하면 8진수로 인식 )


비트단위에서의 정수의 표현방식


1. 정수의 가장 왼쪽에 존재하는 비트는 '부호비트'( MSB ) 이다. ( 0이면 양수이고, 1이면 음수이다 )

2. 음의 정수를 표현할 때는 2의 보수를 취해야한다 . ( 0과 1을 서로 뒤바꾸고 마지막에 1을 더해준다 )


비트단위에서의 실수의 표현방식


+-(1.m)*2^(e-167) 실수 데이터 비트의 반은 e, 반은 m 을 정하는데 사용하는 방식으로 실수를 표현한다.

따라서, 넓은 범위의 실수를 표현할 수 있지만, 실수표현에는 반드시 오차가 존재하게된다. 이 오차를 가리켜 '부동소수점 오차' 라고한다.


비트 연산자


A & B 비트단위로 AND 연산을 한다 : A B 두개의 비트가 모두 1일때 1을 반환하는 연산

A | B  비트단위로 OR 연산을 한다 : A B 두개의 비트중 하나라도 1일때 1을 반환하는 연산

A ^ B 비트 단위로 XOR 연산을 한다 : A B 두개의 비트가 다를때 1을 반환하는 연산

~A 비트 단위로 NOT 연산을 한다 : 비트가 1이라면 0 , 0이라면 1로 반전 ( MSB 도 반전되기때문에 부호또한 바뀐다 )

A << B 비트의 왼쪽이동 : A의 비트열을 B칸씩 왼쪽으로 이동시킨 결과를 반환하는 연산 

A << B 비트의 오른쪽이동 : A의 비트열을 B칸씩 오른쪽으로 이동시킨 결과를 반환하는 연산



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

C : Chapter -6 반복문  (0) 2018.03.19
C : Chapter -5 상수와 기본자료형  (0) 2018.03.17
C : Chpater -3 변수와 연산자  (0) 2018.03.17
C : Chapter -2 프로그램의 기본구성  (0) 2018.03.17
C : Chapter -1 이것이 C언어다  (1) 2018.03.17

연산자 


C언어를 이용해서 특정 연산을 요구할때 사용되는 약속된 기호


변수 


값을 저장할 수 있는 메모리 공간에 붙은 이름


int num

 

int 정수의 저장이 가능한 메모리 공간을 할당한다

num 그 메모리 공간의 이름을 num 이라한다.


변수의 선언 및 초기화 방법


int num1; // num1 이라는 변수 선언

num1 = 3; //  변수num1을 3로 초기화

int num2= 13; // 변수 num2 를 선언과 동시에 13으로 초기화


변수를 선언만 하고 초기화하지 않으면 쓰레기 값이 저장된다. 


변수 선언시 주의할 사항


중괄호 내에 변수를 선언할 경우 변수의 선언문은 반드시 중괄호의 앞부분에 위치해야한다.


변수의 이름을 지을때 적용되는 규칙

1. 변수의 이름은 알파벳, 숫자, 언더바( _ ) 로 구성된다.

2. C언어는 대 소문자를 구분한다 ( num 과 Num 은 다른 변수이다)

3. 변수의 이름은 숫자로 시작할 수 없고, 키워드 또한 변수의 이름으로 사용할 수 없다.

4. 이름 사이에 공백이 사용될 수 없다

* 변수의 이름을 정할 때에는 변수의 역할에 어울리는, 의미있는 이름을 지어야 이해하기 쉬운, 분석이 용이한 프로그램을 만들 수 있다.


변수의 자료형


변수는 두가지 부류로 나눌 수 있다


정수형 변수 ( 정수의 저장을 목적으로 선언된 변수 ) - char , short , int , long 

실수형 변수 ( 실수의 저장을 목적으로 선언된 변수 ) - float , double


이를 분류하는 이유는 정수냐 실수냐에 따라서 값이 메모리 공간에 저장 및 참조되는 방식이 다르기 때문이다.


C 언어의 다양한 연산자


대입 연산자 : = 

산술 연산자 : - + * / %

복합 대입 연산자 :  -= += %= *= /= ....

증가 감소 연산자 : ++ -- ( ++num; -> num의 값을 증가시킨 후 문장을 실행 , num++; -> 문장을 실행 후 마지막에 num의 값을 증가 )

관계 연산자 : < > == != <= >= ( 조건을 만족하면 1<true> 을 , 만족하지 않으면 0 <false> 을 반환한다)

논리 연산자 : && || ! ( && -> A&&B A,B 둘다 참이면 1 반환, || -> A||B 하나라도 참이면 1 반환 , !A -> A가 거짓이면 1 반환 )

콤마 연산자 : , ( 콤마연산자는 둘 이상의 변수를 동시에 선언하거나 , 둘 이상의 문장을 한 행에 삽입하는 경우에 사용된다 )


연산자는 연산자 우선순위에 따라 연산된다

C언어의 기본단위인 함수


함수의 정의 - 만들어진 함수 (실행이 가능한 함수)

함수의 호출 - 함수의 실행을 명령하는 행위

인자의 전달 - 함수의 실행을 명령할때 전달하는 입력값


컴퓨터는 프로그램이 실행되자마자 main 이라는 이름의 함수를 찾아 호출을한다. ( 따라서 , 모든 프로그램에는 main 함수가 존재해야한다 )


int main (void) - 반환형식이 int 이고 , 함수이름이 main 이며 , 매개변수가 void로 비어있는 함수 .

{

함수의 몸체 // 위에서 아래로 순차적으로 실행

}


함수 내에 존재하는 문장 끝에는 세미콜론 ; 을 붙여준다


ex)

printf("Hello , World! \n ");

return0;


문장의 끝을 표현하기위해 세미콜론 ; 을 사용한다. ( 조건문이나 반복문과같은 컨트롤 문장에는 세미콜론이 붙지 않는다 )


표준 라이브러리와 printf 함수


printf는 큰따옴표 안에있는 문자열을 인자로 전달하여 모니터에 출력하는 함수이다. 이처럼 printf 함수는 정의하지 않아도 사용할 수 있는데 이처럼 직접 정의하지 않아도 사용할 수 있게 제공되는 함수를 가리켜 표준함수라고 하고, 표준함수들의 모임을 가리켜 표준 라이브러리라고 한다.


printf와 같은 표준함수의 호출을 위해서는 printf 와 관련있는 헤더파일 선언을 해야한다


#include <stdio.h>

헤더파일 stdio.h 안에는 printf 함수의 호출에 필요한 정보가 존재한다. 따라서 printf 함수를 호출하기 위해서는 stdio.h 헤더파일 선언문이 삽입되어야한다. (소스파일의 맨 처음부분에 삽입되어야한다.)


return의 기능


1. 함수의 종료

2. 값의 반환


* main 함수의 종료는 프로그램의 종료를 의미하기때문에 , main 의 body 에서 return문이 컴파일되면 프로그램이 종료된다. 

( 정상적인 종료는 0 를 , 그 이외의 상황에선 0이 아닌수를 전달한다 )


주석의 필요성


주석을 사용함으로써 코드의 가독성을 높이고, 실수를 줄일 수 있다. 이는 코드를 분석하는 이들을 배려하는 수단이며 , 프로그램을 구현한 본인에게도 도움이 된다.


블록단위 주석 /*  */

행단위 주석 //





+ Recent posts