반응형
C#에서 사용하는 정수형 데이터타입과 10진수 이외의 2진수,16진수 사용법, byte와 sbyte의 차이점을 정리한다.
C# 정수형 데이터 타입
데이터 타입 | 설명 | 크기(바이트) | 범위 |
byte | 부호없는정수 | 1(8비트) | 0~255 |
sbyte | signed byte 정수 | 1(8비트) | -128~127 |
short | 정수 | 2(16비트) | -32,768~32,767 |
ushort | unsigned short 부호없는정수 | 2(16비트) | 0~65,535 |
int | 정수 | 4(32비트) | -2,147,483,648~2,147,483,647 |
uint | unsigned short 부호없는정수 | 4(32비트) | 0~4,294,967,295 |
long | 정수 | 8(64비트) | -922,337,203,685,477,508~922,337,203,685,477,507 |
ulong | unsigned short 부호없는정수 | 8(64비트) | 0~18,446,744,073,709,551,615 |
char | 유니코드 문자 | 2(16비트) | - |
2진수, 16진수 표현법
2진수는 (숫자 0과 알파벳b - 0b) 접두사를 사용하면 된다.
16진수는 (숫자 0과 알파벳x -0x) 접두사를 사용하면 된다.
소수 데이터 타입
데이터 형식 | 설명 | 크기(바이트) | 범위 |
float | 단일 정밀도 부동 소수점 형식 (7개의 자릿수만 다룰 수 있음) |
4(32비트) | -3.402823e38~3.402823e38 |
double | 복수 정밀도 부동 소수점 형식 (15~16개의 자릿수를 다룰 수 있음) |
8(64비트) | -1.79769313486232e308~1.79769313486232e308 |
> float형은 유효숫자가 7자리밖에 되질 않기때문에 대략적으로 표현할때 사용
> 소수점 표현은 float형과 double형 두가지 있지만 double형을 권장한다. double이 float에 비해 메모리를 두 배 사용하지만 그만큼 데이터 손실이 적다.
> double형도 데이터 손실이 우려된다면 decimal형을 사용한다.
데이터 형식 | 설명 | 크기(바이트) | 범위 |
decimal | 29자리 데이터를 표현할 수 잇는 소수 형식 | 16(128비트) | ±1.0X10e-28 ~ ±7.9X10e28 |
아래 ConsoleApp1 예제는 여러가지 정수형 데이터타입 예제와 2진수, 16진수 예제이다.
추가로 unsigned byte에 대한 예제로
11111111을 표현할때, 데이터 타입으로 인해 byte는 255이지만, sbyte는 255가 아니라 -1이 출력되는 것을 볼 수 있다.
(2의 보수법으로 음수를 표현하기때문에 -1이 출력)
2의 보수법으로 음수 표현법
1. 먼저 수 부분 비트를 채운다.
2. 전체 비트를 반전시킨다.
3. 반전된 비트에 1을 더한다.
ex)
1. 00000001 <- 10진수 1
2. 11111110 <- 반전
3. 11111111 <- 1을 더한다. 즉 -1을 표현함.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
sbyte a = -10;
byte b = 40;
Console.WriteLine($"a={a}, b={b}");
short c = -30000;
ushort d = 60000;
Console.WriteLine($"c={c}, d={d}");
int e = -1000_0000;
uint f = 3_0000_0000;
//큰 자릿수의 정수 리터럴을 타이핑할때 자릿수 구분자(_)를 이용하면 편리하다.
Console.WriteLine($"e={e}, f={f}");
long g = -5000_0000_0000;
ulong h = 200_0000_0000_0000_0000;
Console.WriteLine($"g={g}, h={h}");
//10진수 리터럴
byte a10 = 240;
Console.WriteLine($"a10={a10}");
//2진수 리터럴
byte a2 = 0b1111_0000;
Console.WriteLine($"a2={a2}");
//16진수 리터럴
byte a16 = 0XF0;
Console.WriteLine($"a16={a16}");
//16진수 리터럴
uint b16 = 0x1234_abcd;
Console.WriteLine($"b16={b16}");
//byte 형식 255는 11111111
//sbyte 형식 -1은 11111111
byte i = 255;
sbyte j = (sbyte)i; //(sbyte)는 변수를 sbyte 형식으로 변환하는 연산자
Console.WriteLine($"i={i}");
Console.WriteLine($"j={j}");
}
}
}
|
ConsoleApp1 소스코드
반응형
'BackEnd > C#' 카테고리의 다른 글
[C# 언어] 비쥬얼 스튜디오 2019 새 프로젝트 만들기, HelloWorld 출력하기 (0) | 2020.02.28 |
---|---|
[C# 언어] C# 공부를 하기위한 환경셋팅 - 비쥬얼 스튜디오 2019 설치 (0) | 2020.02.25 |