C# Chapter 1-1 데이터 정수 형식, 2진수, 16진수 정수 범위
C# 프로젝트 기본 코드
using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
-
Main 함수
-
전체 프로젝트 내에 1개
-
프로그램 처음 시작 시 가장 먼저 실행
-
-
출력 로그
- Console.WriteLine
정수표현
int hp;
hp = 100;
Console.WriteLine("Hello World! {0}", hp);
출력
Hello World! 100
- 정수 종류
- byte : 1byte(8 bit)짜리 바구니
- 예외적으로 양수만! 0 ~ 255 표현
- 2^8 개의 정수 표현 가능
- cf) 문명1에서 간디가 byte형으로 선언된 공격성이 1 이였는데 민주주의 노선을 선택하면 공격성이 -2 감소하였다고 한다. 아이러니하게도 -1이 되는 것이 아닌, 0 ~ 255만 표현할 수 있는 byte 특성 상 underflow 때문에 255가 되었는데 이때문에 간디가 255 공격성을 가진 폭력 간디로 변하는 버그가 있었다고 한다. ㄷㄷ
- 예외적으로 양수만! 0 ~ 255 표현
- short : 2byte(16 bit)짜리 바구니
- 2^16 개의 정수 표현 가능
- int : 4byte(32 bit)짜리 바구니
- 2^32 개의 정수 표현 가능
- long : 8byte(64 bit)짜리 바구니
- 2^64 개의 정수 표현 가능
- byte : 1byte(8 bit)짜리 바구니
비트의 음수 표현
- 음수 표현시 2의 보수를 사용하는 이유
- 0을 +0 -0 두가지로 표현하지 않기 위해 사용.
-0
을 없애기 위해 전체 비트에 1을 더해-0
을 하나 밖에 없는 진짜 0으로 만들어준다.
- 0을 +0 -0 두가지로 표현하지 않기 위해 사용.
- 음수로 변환하기
- 보수 취하기 : 비트의 0은 1로, 1은 0으로 바꿔치기
- +1 해주기
정수 데이터의 종류
정수 형식의 특성
C#은 다음과 같은 미리 정의된 정수 형식을 지원합니다.
C# 형식/키워드 | 범위 | 크기 | .NET 형식 |
---|---|---|---|
sbyte |
-128 ~ 127 | 부호 있는 8비트 정수 | System.SByte |
byte |
0 ~ 255 | 부호 없는 8비트 정수 | System.Byte |
short |
–32,768 ~ 32,767 | 부호 있는 16비트 정수 | System.Int16 |
ushort |
0 ~ 65,535 | 부호 없는 16비트 정수 | System.UInt16 |
int |
–2,147,483,648 ~ 2,147,483,647 | 부호 있는 32비트 정수 | System.Int32 |
uint |
0 ~ 4,294,967,295 | 부호 없는 32비트 정수 | System.UInt32 |
long |
–9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | 부호 있는 64비트 정수 | System.Int64 |
ulong |
0 ~ 18,446,744,073,709,551,615 | 부호 없는 64비트 정수 | System.UInt64 |
nint |
플랫폼에 따라 다름 | 부호 있는 32비트 또는 64비트 정수 | System.IntPtr |
nuint |
플랫폼에 따라 다름 | 부호 없는 32비트 또는 64비트 정수 | System.UIntPtr |