컴퓨터의 데이터 표현방식
컴퓨터는 데이터 표현과 연산을 모두 2진수를 이용하여 처리합니다.
2진수란 데이터를 표현하는데 있어서 0과1 두개의 숫자를 쓰겠다는 의미입니다.
우리가 주로 사용하는 10진수는 0~9 10개의 숫자로 데이터를 표현하겠다는 뜻인데요.
결국 n진수는 n개의 숫자로 데이터를 표현한다는 의미입니다.
16진수는 0부터 시작해서 16개의 숫자로 이루어지지만 기본숫자는 0~9까지밖에없어서 10 = a, 11 = b 이런식으로 영어 알파벳으로 대체하여 표현합니다.
그럼 이제한번 c언어에서 8진수와 16진수를 사용해봅시다.
먼저 변수선언부분 부터 설명해드리겠습니다!
숫자 앞에 0x가 붙으면 16진수 표기법, 0이붙으면 8진수 표기법입니다.
따라서 0x1e는 16진수 1e의 뜻이고 036은 8진수 36이란 뜻입니다. 당연히
아무표기가 없으면 10진수가 됩니다.
출력을 해보면 결국 다같은 값임을 알 수 있는데요 여기서 2개의 %문자 기호가 보이시죠?
%d는 10진 정수를 출력하는 출력 형태 입니다. %o는 8진수 %x는 16진수의 정수를 출력하는 걸 볼 수 있습니다.
10진수와 8진수 그리고 16진수의 차이는 단순한 표현 방식의 차이라는 것만 알면 됩니다. 컴퓨터에서는 2진수
뿐만 아니라 16진수도 꽤 많이 쓰이기 때문에 익숙해 지시면 편할거에요~
그리고 이렇게 표현방식이 달라도 결국 컴퓨터에서는 2진수로 변환시켜 저장하기 때문에 연산하는데에도 지장이 없습니다.ㅋ
'C Programming' 카테고리의 다른 글
c언어의 연산자(2) (0) | 2016.02.19 |
---|---|
c언어의 연산자(1) (0) | 2016.02.18 |
변수선언과 입출력 (0) | 2016.02.17 |
Hello World! (0) | 2016.02.16 |
c언어의 연산자(2)
이번 글에서는 관계 연산자와 논리 연산자에 대해서 알아보도록 하겠습니다.
관계 연산자 : a와 b가 있을 때 a와 b중에 누가 큰지 작은지 또는 같은지 그 관계를 비교해주는 연산자입니다.
( <, >, ==, !=, <=, >=)
연산 | 연산자의 의미 |
< : a < b | a가 b보다 작은가? |
> : a > b | a가 b보다 큰가? |
== : a == b | a와 b가 같은가? |
!= : a != b | a와 b가 같지 않은가? |
<= : a <= b | a가 b보다 작거나 같은가? |
>= : a >= b | a가 b보다 크거나 같은가? |
C언어에서는 조건이 만족하면 1(true) 만족하지 못하면 0(false)를 출력하게됩니다.
이렇게 조건에 만족하게 되면 1 거짓이면 0을 출력하는걸 볼수있어요~
이걸 언제쓰는지에 대해서는 나중에 반복문과 조건문에서 자세히 보도록 해봅시다.
다음은 논리연산자입니다.
논리연산자 : and, or, not을 표현하기 위한 연산자입니다.
연산자 | 연산자의 의미 |
&& | 모두 참이면 1(true)를 표시 |
|| | 하나라도 참이면 1(true)를 표시 |
! | 1(true)면 0(false)를 0(false)면 1(true)를 표시 |
첫 번째 출력문을 보면 value1값이 10과 같고 value2의 값도 20과 같으므로 둘다 참이 되서 1(true)가 출력되게 됩니다!
두 번째 출력문에서는 value1이 10보다 작진 않으므로 거짓이지만 뒤의 value2 >= 20은 true이므로 둘 중 하나가 true가 되서 1이 출력되게 됩니다.
세 번째 출력문은 value1 > 10이 거짓이지만 앞에 !(not)이 붙어서 true로 바뀌어 1이 출력되는 걸 볼 수 있습니다.
여기서 || 이기호가 어디에 있는지 모르는 분들이 계실겁니다. 처음 배우는 사람들은 소문자 L이나 대문자 I로 많이들 생각하시는데요.
OR기호(||) 소문자L(ll) 대문자I (II) 같아보이지만 다릅니다. 그럼 OR기호는 키보드 어디에있을까요?
자신이 컴퓨터를 사용하면서 한번도 사용하지 않았던 기호를 찾아보세요......네 그거에요. 그거
\표시 위에 달려있는 : 이모양의 기호가 || 입니다.
다음포스팅에는 진법과 bit연산에 대해 알아보도록 합시다.
'C Programming' 카테고리의 다른 글
컴퓨터의 데이터 표현방식 (1) | 2016.02.24 |
---|---|
c언어의 연산자(1) (0) | 2016.02.18 |
변수선언과 입출력 (0) | 2016.02.17 |
Hello World! (0) | 2016.02.16 |
c언어의 연산자(1)
바로 앞 포스팅에서 변수 선언, 입력, 출력을 배웠는데요. 이번 포스팅은 변수를 선언하고 값을 입력한 후에 그 값들을 가지고 연산을 하는 시간을 갖도록 하겠습니다.
소스코드부터 던져놓고 시작하겠습니다.
많이 보던 기호들이죠? +,-,*,/ 그리고 조금 생소한 %기호까지 있는데요 이 연산자들을 산술연산자라고 합니다.
앞의 4개는 잘 아실테니 마지막 기호인 %를 조금 설명하자면 '/'연산자가 나누기의 '몫'을 표시한다면 %연산자는 몫이 아닌 '나머지'를 출력해주는 연산입니다.
출력결과를 보시면
이렇게 나와요~
5를 3으로 나누면 몫이 1이고 나머지가 2이기 때문에 저런 결과가 나오는데요.
여기서 매의 눈을 가진 분들이라면 분명 마지막 printf()함수에 %기호를 2개를 썼는데 1개밖에 나오지 않습니까? 라는 의문이 들꺼에요 printf()함수내에서 %는 특수기호입니다 %뒤에 나오는 문자에 따라 출력형태를 결정하게되는 구조입니다. %d도 %뒤에 d라는 문자가붙어서 정수라는 출력형태를 결정한거구요~
그래서 그냥 순수하게 %기호를 출력하고자 할때는 %앞에 %를 붙여서 출력해야됩니다~
다음소개할 연산자는 대입연산자'='입니다.
대입연산자는 말그대로 대입해주는 연산자입니다
왼쪽에 있는 변수에 오른쪽에 있는 연산값을 넣어주는 것입니다
소스코드와 화면만 보셔도 아시겠죠?ㅎㅎ
그리고 대입연산자와 산술연산자를 합쳐논 연산자가 있습니다. 이건 예제를 들지않고 글로만 보여드릴께요
a = a + b; -> a += b;
a = a - b; -> a -= b;
a = a * b; -> a *= b;
a = a / b; -> a /= b;
a = a % b; -> a %= b;
왼쪽과 오른쪽 연산이 같은 결과물을 나타냅니다. 오른쪽은 그냥 줄임말?이라고 생각하시면되요. 본인이 편한 연산자를 쓰면 됩니다!
실제로 같은지 의심이 되시는분은 직접 코딩해보시기 바랍니다ㅋㅋ
다음은 증가, 감소연산자입니다.
value1++과 ++value2 그리괴 value1--과 --value2가 보이시나요?
value1++은 션 연산 후 증가
++value2는 선 증가 후 연산
value1--은 션 연산 후 감소
--value2는 선 감소 후 연산
이라고 합니다.
무슨뜻인지는 아래의 출력결과를 보면서 이야기해봅시다~
value1과 value2는 먼저 10이라는 값으로 시작을 했습니다.
첫번째 value1++은 선연산(여기서 연산은 출력!)후 증가를 하기 때문에 기존의 값인 10이 출력된 후 11로 변하게 됩니다.
두번째 printf()함수를보면 증가된 11이 출력되는 것을 보실 수 있어요~
++value2는 이제 무슨 뜻인지 감이 잡히시나요? value1++과는 다르게 먼저 증가 시켜준 후 출력해 줍니다. 그래서 첫 번째와 두번째 printf()에서 같은 출력결과가 나타나게 되죠
감소 연산자도 증가연산자와 마찬가지이므로 설명은 생략하겠습니다 ㅎㅎ
이걸로 이번 포스팅을 끝내겠는데요 그렇다고 아직 연산자가 다끝난게 아니에요 ㅠㅠ 아직 많이 남았습니다.
아직 많이 남은 연산자는 다음 포스팅에 올릴께요~~
'C Programming' 카테고리의 다른 글
컴퓨터의 데이터 표현방식 (1) | 2016.02.24 |
---|---|
c언어의 연산자(2) (0) | 2016.02.19 |
변수선언과 입출력 (0) | 2016.02.17 |
Hello World! (0) | 2016.02.16 |
변수선언과 입출력
변수(변경이 가능한 수)는 데이터를 저장할 수 있는 메모리 공간입니다.
변수는 크게 정수형과 실수형으로 나뉘고 정수형은 또다시 char, int, long 등으로
실수형은 double, float 등으로 나뉘게 됩니다.
일단 예제소스부터 봅시다.
int value; 부분이 바로 변수를 만드는(변수를 선언하는)부분입니다.
앞에 파란색으로 된 int 는 변수의 형태, 뒤에 value는 변수의 이름이 되겠습니다.
그 바로 아래 value = 30; 이건 다들 짐작하시겠지만 value라는 변수에 30이라는 데이터를 넣어주는 겁니다.
출력화면에는 30이라는 숫자가 출력되게 됩니다.
그나저나 printf("%d\n",value);에서 %d는 머고 \n은 무엇일까요?
\n은 newline 즉 엔터입니다. 문장끝에 엔터 즉 다음라인으로 넘어가게 해주는 문자입니다.
이기호를 쓰지않고 printf("%d",value);로 하면
이렇게 되요. 다음줄로 넘어가고싶을 때는 꼭 써줘야 됩니다.ㅎㅎ
그리고 %d는 무엇일까요?
바로 10진정수를 출력하라는 의미입니다.decimal의 약자죠. %d뿐만아니라 %c, %s, %p 등등 다양한 형태의 출력문구가 있는데요 그건 나중에 포스팅 하도록 하겠습니다.
여튼 30이라는 숫자가 출력되는걸 보니 %d에는 뒤에적어놓은 value라는 애가 들어가나봅니다.
그럼 여러개의 숫자를 사용할 때는 어떻게 printf를 작성해야되는지 알아봅시다~
소스와 출력화면입니다.
대충 짐작 가시나요?
네 그렇습니다 걍 앞에서부터 순서대로 들어갑니다. 참 쉽죠?
지금까지는 소스코드에 직접 값을 넣어놨습니다만 이번에는 입력을 받아서 출력을 해보도록 하겠습니다~
새로운함수가 등장했습니다. 바로 scanf(); printf가 출력이라면 scanf는 입력입니다. scanf도 입출력관련 기능이기 때문에 stdio.h에 들어있습니다.
복합기를 떠올려보시면 print는 출력 scan은 입력!
소스를 보시면 아시겠지만 printf랑 쓰는방법이 똑같습니다! 단지 입력과 출력의 차이
그리고 변수의 이름앞에 &이 보이시나요? printf와의 차이는 그거하나 차이입니다. 그럼 &을 왜쓰는건지는! 나~~~~~중에 설명해드릴께요 지금은 모르셔도되요 걍 외워요
그럼 여러개의 숫자를 입력받을 경우에는 어떻게 해야될까요?
printf와 마찬가지로 scanf("%d %d %d",&value, &value2, &value3);
요런식으로 하면됩니다. 참 쉽죠?
이로써 c언어로 입력받고 출력받는 것 까지 되었습니다. 다음 포스팅에는 입력한 값을 가지고 연산을 해보는 시간을 가져보겠습니다~ 열공하세요.
'C Programming' 카테고리의 다른 글
컴퓨터의 데이터 표현방식 (1) | 2016.02.24 |
---|---|
c언어의 연산자(2) (0) | 2016.02.19 |
c언어의 연산자(1) (0) | 2016.02.18 |
Hello World! (0) | 2016.02.16 |
Hello World!
C언어의 세계에 오신걸 환영합니다^^
이 글을 시작으로 C언어에 대한 전반적인 내용을 쭈~욱 포스팅 할 예정입니다.
일단 소스먼저 던져놓고 시작하겠습니다.ㅋㅋ
#include <stdio.h> 가보이시나요?
잠시 영어시간을 가져봅시다 ㅋ
include : 1. 포함하다 2. ~을 (~에) 포함시키다
stdio.h가 먼지는 모르겠지만 여튼 이걸 포함하라는 의미같은데요
stdio.h가바로 헤더파일입니다.
헤더파일은 확장자가 .h로 끝나는 파일인데요 c언어의 여러가지 기능들은 전부 헤더파일안에 숨어있습니다.
그 기능들을 사용하기위해서 소스파일에 헤더파일을 포함시키는 부분이 #include ~~ 부분입니다.
stdio.h에서 stdio는 standard input output(표준 입/출력)의 약자입니다.
결론을 말하면 stdio.h 헤더파일은 c언어의 입력기능과 출력기능을 가지고있는 파일이란 의미입니다
이 소스를 컴파일 후 실행시키면
이런결과가 나타나게 됩니다.
위 소스에서 사용한 printf(~~); 함수는 이렇게 콘솔창에 글씨를 출력하게 해주는 출력함수입니다.
출력기능을 담당하는 함수이기에 stdio(표준입출력)헤더파일에 들어있는 것입니다.
소스에서 헤더파일 부분을 지우면
이렇게 printf부분에 빨간 밑줄표시가 생기게되요.(visual studio 2010)
물론 요새는 컴파일러들이 좋아져서 사용자가 자주쓰는 함수들은 헤더파일을 적지 않아도 에러가 나지않고
정상적으로 실행 되긴합니다만....빨간 줄이 거슬리니 꼭 써주도록 합시다 ㅋㅋ
(대학교 신입생들에게 이예제를 보여주면서 이소스는 에러가 납니다 라고 했는데 아주 잘 실행되서 당혹스러웠던 적이 있습니다...ㅠㅠ)
c언어 포스팅은 한번에 많은 내용이 아닌 조금씩 배워갈 수 있도록 하나 하나 천천히 올리겠습니다.....절대로 귀찮아서 그런게 아니에요...ㅎ 다음 포스팅에서는 변수선언과 입력과 출력에 대해서 작성할 예정입니다.
'C Programming' 카테고리의 다른 글
컴퓨터의 데이터 표현방식 (1) | 2016.02.24 |
---|---|
c언어의 연산자(2) (0) | 2016.02.19 |
c언어의 연산자(1) (0) | 2016.02.18 |
변수선언과 입출력 (0) | 2016.02.17 |