-
C# 자료형 (교육 4일차)C# 2020. 5. 21. 20:45
오늘은 C#의 정수형, 실수형, 문자형에 대해 배웠다.
자료형 크기 의미 기억 가능 범위 sbyte 1 byte 음과 양을 포함하는 가장 작은 정수 -128 ~ 127 byte 1 byte 부호가 없는 가장 작은 정수 0 ~ 255 short 2 byte 음과 양을 포함하는 작은 정수 -32,768 ~ 32,767 ushort 2 byte 부호가 없는 작은 정수 0 ~ 65535 int 4 byte 부호가 있는 정수 -2,147,483,648 ~ 2,147,483,647 uint 4 byte 부호가 없는 정수 0 ~ 4,294,967,298 long 8 byte 부호가 있는 큰 정수 -9,223,372,036,854,775,808 ~
9,223,372,036,854,775,807ulong 8 byte 부호가 없는 큰 정수 0 ~ 18,446,744,073,709,551,615 먼저 정수형에 대해서다. 대학교 재학 시절 컴퓨터 구조론 시간에 비트 연산을 손으로 뻔질나게 했었는데 그에 대한 정리를 오늘 수업으로 들은 느낌이다.
정수형에 대해서 음과 양을 표현하는 방식은 두 가지가 있는데, 가장 앞비트가 음수 양수를 표현하는 비트이지만, 위의 표에서는 그 방법을 사용하지 않는다. 그 이유는 두 가지가 있는데 하나는 +0과 -0으로 비트가 낭비되기 때문이고 두 번째 이유로는 +7과 -7의 덧셈이 성립하지 않는다는 이유가 두 번째이다.
0 0 0 0 0 1 1 1
+ 1 0 0 0 0 1 1 1
--------------------
1 0 0 0 1 1 1 0
위와 같이 0이 나와야 함에도 -14라는 엉뚱한 값이 나온다. 따라서 2의 보수법을 사용한다. 예를 들어 2 byte로 표현할 수 있는 숫자의 범위는 2^16이므로 0~65535이고 숫자의 개수는 65536이 될 것이다. 65535를 2로 나눈다. 32,767.5 가 나오는데 이 숫자를 기점으로 32,767 까지는 양수의 범위로 그리고 32,768부터는 음수의 값을 가지는 방식으로 정수를 표현한다. 비트는 32,768의 값을 나타내지만 위의 부호가 있는 정수 표현법을 사용했을 때에는 -32,768의 값을 가지게 된다. 반대로 표현할 수 있는 가장 큰 수 인 65535는 -1로 인식한다.
위의 예제에서 볼 수 있듯이 8비트 부호가 있는 자료형에서 표현할 수 있는 가장 큰 수인 21474836에서 단지 1을 더했을 뿐인데 가장 작은 음수 값이 나온다.
다음으로는 실수형이다.
자료형 크기 의미 float 4 byte 32비트 부동소수점 double 8 byte 64비트 부동소수점 decimal 16 byte 128비트 부동소수점 특이 사항으로는 float을 쓸 때는 상수 뒤에 f를 붙여줘야 하고, double을 쓸 때는 상수 뒤에 아무것도 필요 없고, decimal을 쓸 때는 m을 붙여주는 것이다.
다음은 문자형이다.
자료형 크기 의미 범위 char 2byte 유니코드에 기반한 한 글자 U+0000 ~ U+FFFF string char의 모음 char은 아스키코드에서 더 진화한 유니코드를 사용했고, 범위는 4비트씩 끊어서 16진수로 표현되었음을 볼 수 있다.
밑의 사진은 실수형과 문자형의 예제 실행 모습이다.
문자형인 ch를 정수형인 iNum5에 집어넣고 정수형으로 ch를 출력해보고 캐스팅을 사용해서 문자형일 때 iNum5의 숫자에 해당하는 유니코드를 출력하고 마지막으로, ch를 정수형으로 출력해서 일치하는지를 확인했다.
'C#' 카테고리의 다른 글
C# 객체지향, 구조체, 배열(교육8일차) (0) 2020.05.27 C# 반복문 (교육 7일차) (0) 2020.05.26 C# 자료형, 조건문, 연산자 (교육 6일차) (0) 2020.05.25 C# 자료형, 16진수, 용어(교육 5일차) (0) 2020.05.23 C# 개발환경 구축 (교육 3일차) (0) 2020.05.20