Presentation is loading. Please wait.

Presentation is loading. Please wait.

[변수에서 값의 구현 원리] 1Byte  8Bit 로 구성 1Bit는 0 , 1 로 표현 2Bit로 표현할수 있는 경우의 수 00 01 10 11 22 가지, 즉 4가지 경우의 수 발생 8Bit 의 경우 00000000 ~ 11111111.

Similar presentations


Presentation on theme: "[변수에서 값의 구현 원리] 1Byte  8Bit 로 구성 1Bit는 0 , 1 로 표현 2Bit로 표현할수 있는 경우의 수 00 01 10 11 22 가지, 즉 4가지 경우의 수 발생 8Bit 의 경우 00000000 ~ 11111111."— Presentation transcript:

1 [변수에서 값의 구현 원리] 1Byte  8Bit 로 구성 1Bit는 0 , 1 로 표현 2Bit로 표현할수 있는 경우의 수 가지, 즉 4가지 경우의 수 발생 8Bit 의 경우 ~ 까지 이므로 28가지, 즉 65536가지의 수 발생 int M = 65; // (실제로는 2진수로 변수에 담긴다.) 진법(2진수, 8진수, 16진수) (10) MSB(Most Signed Bit) 최상위 부호비트 0: 양수 1: 음수 (단, sign형 기억장소 일때)

2 10진수 변환시 [1방법] = 0*20 + 1*21 + 0*22 + 1*23 + 0*24 + 0*25 + 0*26 결과: 10 마지막 27자리는 MSB이므로 계산의 대상에서 제외된다. [2 방법] = 0*1 + 1*2 + 0*4 + 1*8 + 0*16 + 0*32 + 0*64 [3 방법] = 1*2 + 1* 8 [4 방법] = 2+8 [진법 및 sign, unsigned 형 변수의 완벽해부] *********** 2진수 ************(1Byte) (10) MSB(Most Sign Bit) 최상위 부호비트 0: 양수 : (+10) 1: 음수 : (-11) 20 자리 21 자리 22 자리 23 자리 24 자리 25 자리 26 자리 27 자리

3 MSB (가중치) (2진수) MSB (가중치) (2진수) = ( 91 ) MSB (가중치) (2진수) = ( 52 )

4 [16진수] (10진수로 볼때) A B C D E F 2진수 네자리는 16진수 한자리 (16진수 1자리  2진수 4자리) 진수 세자리는 8진수 한자리( 8진수 1자리  2진수 3자리) ( 19 )  0x13 (16진수) ( 19 )  ( 8진수) ex)

5 [진법간 상호 변환] 0x23  x79    x [컴퓨터의 음수 표현]  2의 보수법 ( 2’s Complement ) ( +10 ) ( 1의 보수법으로 변환 ) ( 위의 수에 1을 더한다) ( -10 ) MSB

6 [양수일경우] MSB 64 32 16 8 4 2 1 (가중치) 0 0 0 0 1 0 1 0 (2진수) = 8 + 2 결과: +10

7 28가지  256가지 양수 128 가지( 0 ~ 127 ) 음수 128 가지( -1 ~ -128 )
: -( ) 결과: : -( ) 결과: -43 문 1) 를 2진수로 표현 하시오. 힌트: 1 과 0 을 바꾸어서 21 을 만든다 : - ( ) [ 1Byte 기억장소가 기억할수 있는 값의 범위 ] (127) : ( 2 ) ( 1 ) ( 0 ) ( -1 ) ( -2 ) ( -3 ) ( -4 ) : ( -128 ) 28가지  256가지 양수 128 가지( 0 ~ 127 ) 음수 128 가지( -1 ~ -128 )

8 [signed 형과 unsigned 형 기억장소] signed 형일경우) ( +33 ) ( - 8 ) unsigned 형일경우) : 첫번째 비트는 MSB 가 아니다. 즉, 음수가 없다 ( +33 ) ( +248 ) char a = 128; // (-128) // 첫 비트를 MSB로 인식 unsigned char a = 128; // // 첫 비트를 MSB로 인식하지 않음

9 1. 자료형 2. 상수 3. 변수 a. 정수형 자료형 종 류 크기(byte) 표현가능수 값의 범위 char 1 28 -128 ~ 127 unsigned char 0 ~ 255 int 2 또는 4 short 2 216 ~ 32767 long 4 232 ~ unsigned int unsigned short 0 ~ 65535 unsigned long 0 ~ int 또는 unsigned int 는 16bit 운영체제에서는 2byte공간이 확보되고 32bit 운영체제나 대형서버 기종에서는 4byte공간이 확보된다.

10 b. 실수형 자료형 종 류 크기(byte) 값의 범위 float 4 약 –10-38 ~ +10+38 double 8
종 류 크기(byte) 값의 범위 float 4 약 –10-38 ~ double 8 약 – ~ [자료형 예제] int kor; // 2 byte char hak; // 1 byte double avg; // 8 byte char su = 280; // 가능한가? // -128 ~ 127 long suja = ;

11 [출력함수]  C언어는 문장(statement)이라는 것을 이용하지 않고 함수(function)라는 것을 이 용해 입출력을 수행한다. [ printf 함수 ] 형식) printf(“ 출력메시지”); printf(“ 출력서식”); printf(“ 출력메시지 및 출력서식”, 출력대상체...); 1. 사용예 printf(“ Hello !”); printf(“안녕하세요?”); printf(“ 박상훈은 잘 생겼다.”); printf(“ 상훈이와 철수 는 밤새도록 공부를 열심히 하였다.”); (줄을 바꾸어 출력하고자 할경우) printf(“상훈이는 C언어에 \n미쳤다.”); 2. 사용예 printf(“ %d ”, 25); printf(“ %f ”, 45.43); printf(“ %c ”, ‘A’); printf(“ %ld ”, ); printf(“ %s ”, “이한 디지털리”); int kor = 97; printf(“ %d ”, kor );

12 3. 사용예 printf(“ 철수의 나이는 %d 살 이고 \n영희의 나이는 %d 살 입니다.”, 9, 8 );
[결과] 철수의 나이는 9살 이고 영희의 나이는 8살 입니다. printf(“ 여기에 있는 사과의 종류는 %s 이고, \n갯수는 %d 개 입니다.” , “홍옥”, 4 ); [결과] 여기에 있는 사과의 종류는 홍옥이고, 갯수는 4개 입니다. [예제] #include<stdio.h> void main() { int kor = 97; printf(“국어 점수는 %d입니다.”, kor ); }

13 [상수]  상수란. : 변할수 없는 고유한 크기를 갖는 수  상수의 종류 1
[상수]  상수란? : 변할수 없는 고유한 크기를 갖는 수  상수의 종류 정수상수  정수는 일반적으로 메모리상에 2byte로 표현 된다.  4byte로 표현하여 사용 하고자 할 경우에는 숫자 뒤에 L 자를 붙히면 된다. 예) 43L  8진수는 숫자 앞에 0(zero) 을 붙히고, 16진수는 숫자앞에 0x를 붙힌다. ( 십진수: 진수: 진수: 0x3A ) 상수종류, 의 미 표 현 정수상수 소숫점이 없는수 32, 156, 0, 23L, 0x3a, 021 실수상수 소수점이나 지수를 가진수 21.32, 0.012, 21.3E+01, 76.2F 문자상수 ‘ ‘ 안에 표현 되는 1byte 수 ‘A’, ‘M’, ‘b’, ‘\n’, ‘\t’ 문자열상수 “ “ 안에 표현되는 2byte 이상의 수 “KBS”, “mbc”, “박상훈”, “a” 나열형상수 사용자가 임의로 만든 수 NAME, PRICE, PCT 주소상수 메모리 상의 임의의 위치 값 ‘\0’, (char *)0xfb31

14 [정수 출력 서식] printf() 과 같은 함수를 이용하여 정수를 출력하기 위해서는 다음과 같은 출력서식을 사용한다.
출 력 범 위 출력크기 결과값 %d ~ 32767 2 byte 범위의 data 출력용 10진수 %o 8진수 %x 16진수 %u 0 ~ (주소 표현시 사용) %ld ~ 4 byte 범위의 data 출력용 %lo %lx %lu 0 ~ [Tip] 우리는 어떤 data 를 어떻게 출력 하느냐에 따라 적절한 출력 서식을 선택 해야만 한다. 위의 내용은 다소 중요한 내용이므로 외워두자!

15 //출력서식 예제1 #include<stdio.h>
void main() { printf(“ %d\n”, -23); printf(“ %ld\n”, -231); printf(“ %d\n”, ); printf(“ %u\n”, -23); printf(“ %lu\n”, -2332); printf(“ %ld\n”, ); } // 출력 범위에 맞지 않으면 쓰레기 값이 출력된다. 2. 실수상수  실수는 일반적으로 메모리상에 8byte로 표현 된다.  4byte로 표현 하고자 할경우에는 뒤에 F자를 붙힌다. 예) 23.5F 출력서식 출력내용 출력 예 %f 소숫점 이하 6자리 까지 출력한다. , %e 지수 형태로 출력한다. e+01 %g 일반적인 형태로 출력한다. 23.543

16 printf( “%f “, 21.8 ); 결과: printf( “%f “, ); 결과: printf( “%f “, ); 결과: printf( “%f “, ); 결과: (소숫점 이하 7자리에서 반올림) printf( “%e ”, 21.8 ); 결과: e+01 printf( “%e “, ); 결과: e-02 printf( “%e “, ); 결과: e+02 printf( “%e “, ); 결과: e-01 (7자리에서 반올림) printf( “%g ”, 21.8 ); 결과: printf( “%g “, ); 결과: printf( “%g “, ); 결과:

17 3. 문자형 상수  ‘ ‘안에 기재하는 1byte문자  문자상수를 표현할때는 2btye공간을 필요로 하지만 기억장소에 저장이 될때는 하위 1byte 만 저장이 되어진다. ( 따라서 1byte 정수와 구별이 되지 않는다.)  제어문자(하드웨어 적인 기능을 수행 하는 문자)를 포함한다. ‘\n’ : 커서나 파일 포인터를 다음행 동일열로 이동 시킨다. ‘\a’ : 스피커를 통해 “삑” 소리를 나게 한다. ‘\r’ : 커서나 파일 포인터를 동일행 첫열로 이동 시킨다. ‘\f’ : 프린터 용지를 한장 넘긴다. ‘\b’ : 커서나 파일 포인터를 동일행 이전 열로 이동 시킨다. ‘\t’ : 커서나 파일 포인터를 동일행에서 일정한 칸만큼 이동 시킨다.  출력서식 으로는 %c 를 이용하여 출력한다. #include<stdio.h> void main() { printf(“%c”, ‘A’); printf(“%c”, ‘\n’); printf(“%c”, ‘B’); printf(“%c”, 65); printf(“%c”, 97); } [출력결과] A BAa

18 4. 문자열 상수  따옴표(“ “)안에 사용하는 문자  문자열상수는 실제 표현되어 있는 글자수 보다 1byte더 크게 메모리에 표현된다.  모든 문자열 뒤에는 NULL(널)값이 붙어 있다.  출력서식으로는 %s를 사용한다. #include<stdio.h> void main() { printf(“%d”, sizeof( “korea”) ); printf(“%d”, sizeof(“english”) ); printf(“%d”, sizeof( “japan”) ); printf(“%d”, sizeof(int) ); printf(“%d”, sizeof(double) ); printf(“%d”, sizeof(27) ); printf(“%d”, sizeof(2.45) ); } #include<stdio.h> void main() { printf(“%s\n”, “korea”); printf(“%s\n”, “english”); printf(“%s\n”, “japan”); } sizeof( ) 연산자란? 괄호안에 자료형, 변수, 값 등을 넣을수 있으며 괄호안에 있는 것이 메모리에 표현될때 해당 byte수를 발생한다.

19 #include<stdio.h>
void main() { printf( “MBC\n”); printf( “MBC+1\n”); printf( “MBC+2\n”); } [처리결과] MBC MBC+1 MBC+2 #include<stdio.h> void main() { printf(“%s\n”, “MBC”); printf(“%s\n”, “MBC”+1); printf(“%s\n”, “MBC”+2); } [처리결과] MBC BC C

20 [문자열 상수가 메모리에 표현 되는 방법] C언어에서 모든 문자열은 자기 자신의 주소로 간주된다
[문자열 상수가 메모리에 표현 되는 방법] C언어에서 모든 문자열은 자기 자신의 주소로 간주된다. 따라서 “박상훈” 이란 문자열이 몇번지쯤에 있는지를 알고 싶으면 “박상훈”이란 번지를 출력해 보면 된다. 그리고 %s라는 출력서식 또한 해당 번지부터 시작해서 널값 전까지 출력하라는 뜻이므로 “MBC”번지 부터 널값 전까지 출력한다. ‘M’ ‘B’ ‘C’ ‘\0’ “MBC”+3 번지 “MBC”+2 번지 “MBC”+1 번지 “MBC” 번지

21 5. 나열형 상수  사용자가 임의로 숫자를 만들어 사용하는 방법으로 컴파일러와의 약속에 의 해 구현될수 있다
5. 나열형 상수  사용자가 임의로 숫자를 만들어 사용하는 방법으로 컴파일러와의 약속에 의 해 구현될수 있다. 정수와 완전히 동일하게 사용된다.  예) enum COLOR{BLACK, BLUE, GREEN, MAZENTA}; 이름  문자를 숫자처럼 사용하는 방법이다  초기값이 지정되면 해당값을 사용하며 이후의 문자들은 무조건 앞의 숫자에 1을 더한 값을 사용하게 된다. #include<stdio.h> void main() { enum COLOR{BLACK, BLUE = 4, RED, HHH = 7, FFF }; int su = BLACK + BLUE; printf(“ %d “, su); printf(“ %d “, RED + FFF ); }

22 3. 변수  변수는 상수값을 기억 시키기 위한 메모리의 일정 공간을 의미한다
3. 변수  변수는 상수값을 기억 시키기 위한 메모리의 일정 공간을 의미한다.  종류: 정수변수, 실수변수, 문자변수, 나열형변수, 주소변수 등이 있다 문자변수  기억장소를 1byte로 확보한다  char, unsigned char 예약어를 사용하여 변수를 준비한다  char M; unsigned char N; 3.2 정수변수  자료형에 따라 기억장소의 크기가 결정된다  short, int, unsigned short, unsigned int : 2byte  long, unsigned long : 4byte 3.3 실수변수  float(4), double(8) 의 크기로 기억장소가 확보된다. 3.4 나열형 변수  나열형 상수를 대입할때 사용이 된다  정수변수와 동일하게 취급된다  enum NAT{ONE, TWO, THREE}; enum NAT var = TWO;

23 [자동형 변환과 강제형 변환] a. 자동형 변환  연산이나 대입시에 자료형이 자동적으로 바뀌어서 처리되는 것을 말한다
[자동형 변환과 강제형 변환] a. 자동형 변환  연산이나 대입시에 자료형이 자동적으로 바뀌어서 처리되는 것을 말한다.  연산이나 대입시 자료형이 작은쪽에서 큰쪽으로 자료형 변환이 발생한다.  크기 char -> unsigned char -> short -> unsigned short -> int -> unsigned int -> long -> unsigned long -> float -> double 예) ‘A’ + 3 일경우 ‘A’는 char형이고 3은 int 형이므로 char형이 int 형으로 변환되어 연산이 발생한다. 연산의 결과는 int 형이 발생한다. #include<stdio.h> void main() { int M, N; printf(“%f”, ); M = ; printf(“%d,%f”, M, ); }

24 a. 강제형 변환  사용자가 강제적으로 형변환을 유도하는 것을 말한다.  이때 사용되는 연산자를 cast 연산자라 한다
a. 강제형 변환  사용자가 강제적으로 형변환을 유도하는 것을 말한다.  이때 사용되는 연산자를 cast 연산자라 한다. 예) int M = (int)6.9; int A = (int)( ); printf(“%d”, (int)(2.4+2) ); int Tot = ( )/3; #include<stdio.h> void main() { int M; double N; printf(“%d”, (int)( ) ); N = ; printf(“%d,%d”, M, (int) N ); }


Download ppt "[변수에서 값의 구현 원리] 1Byte  8Bit 로 구성 1Bit는 0 , 1 로 표현 2Bit로 표현할수 있는 경우의 수 00 01 10 11 22 가지, 즉 4가지 경우의 수 발생 8Bit 의 경우 00000000 ~ 11111111."

Similar presentations


Ads by Google