Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# Int16 구조체 완벽 정리: 16비트 부호 있는 정수 다루기

C#의 Int16 구조체는 -32,768부터 +32,767까지의 값을 표현할 수 있는 16비트 부호 있는(signed) 정수를 나타냅니다. C#에서는 short 키워드로 Int16을 사용할 수 있으며, 메모리를 절약해야 하는 상황에서 유용하게 활용됩니다.

Int16 구조체의 주요 필드

Int16 구조체에는 다음과 같은 두 개의 상수 필드가 있습니다.

번호필드 및 설명
1MaxValue — Int16이 가질 수 있는 최댓값(32,767)을 나타내는 상수 필드입니다.
2MinValue — Int16이 가질 수 있는 최솟값(-32,768)을 나타내는 상수 필드입니다.

Int16 구조체의 주요 메서드

Int16 구조체에서 자주 사용되는 메서드는 다음과 같습니다.

번호메서드 및 설명
1CompareTo(Int16) — 현재 인스턴스와 지정된 16비트 부호 있는 정수를 비교하고, 이 인스턴스의 값이 더 작은지, 같은지, 큰지를 나타내는 정수를 반환합니다.
2CompareTo(Object) — 현재 인스턴스와 지정된 객체를 비교하고, 그 결과를 나타내는 정수를 반환합니다.
3Equals(Int16) — 현재 인스턴스가 지정된 Int16 값과 같은지 여부를 나타내는 값을 반환합니다.
4Equals(Object) — 현재 인스턴스가 지정된 객체와 같은지 여부를 나타내는 값을 반환합니다.
5GetHashCode() — 현재 인스턴스의 해시 코드를 반환합니다.
6GetTypeCode() — 값 형식 Int16에 대한 TypeCode를 반환합니다.
7Parse(String) — 숫자의 문자열 표현을 해당하는 16비트 부호 있는 정수로 변환합니다.

이제 실제 예제를 통해 Int16 구조체의 주요 메서드들을 살펴보겠습니다.

Int16.GetHashCode() 메서드

C#의 Int16.GetHashCode() 메서드는 현재 인스턴스의 해시 코드를 반환하는 데 사용됩니다.

구문

public override int GetHashCode ();

예제 1

다음은 Int16.GetHashCode() 메서드를 구현한 첫 번째 예제입니다.

using System;
public class Demo {
   public static void Main() {
      short val1 = 20;
      short val2 = 25;
      Console.WriteLine("Value1 = "+val1);
      Console.WriteLine("Value2 = "+val2);
      Console.WriteLine("HashCode for value1 = "+val1.GetHashCode());
      Console.WriteLine("HashCode for value2 = "+val2.GetHashCode());
      Console.WriteLine("Are they equal? = "+(val1.Equals(val2)));
   }
}

출력 결과

위 코드를 실행하면 다음과 같은 출력이 생성됩니다.

Value1 = 20
Value2 = 25
HashCode for value1 = 1310740
HashCode for value2 = 1638425
Are they equal? = False

예제 2

이번에는 Int16.MaxValue를 활용한 또 다른 예제를 살펴보겠습니다.

using System;
public class Demo {
   public static void Main() {
      short val1 = 0;
      short val2 = Int16.MaxValue;
      Console.WriteLine("Value1 = "+val1);
      Console.WriteLine("Value2 = "+val2);
      Console.WriteLine("HashCode for value1 = "+val1.GetHashCode());
      Console.WriteLine("HashCode for value2 = "+val2.GetHashCode());
      Console.WriteLine("Are they equal? = "+(val1.Equals(val2)));
   }
}

출력 결과

Value1 = 0
Value2 = 32767
HashCode for value1 = 0
HashCode for value2 = 2147450879
Are they equal? = False

Int16.GetTypeCode() 메서드

C#의 Int16.GetTypeCode() 메서드는 값 형식 Int16에 대한 TypeCode를 반환하는 데 사용됩니다.

구문

public TypeCode GetTypeCode ();

예제 1

다음은 Int16.GetTypeCode() 메서드를 구현한 예제입니다.

using System;
public class Demo {
   public static void Main() {
      short val1 = 0;
      short val2 = Int16.MaxValue;
      Console.WriteLine("Value1 = "+val1);
      Console.WriteLine("Value2 = "+val2);
      Console.WriteLine("HashCode for value1 = "+val1.GetHashCode());
      Console.WriteLine("HashCode for value2 = "+val2.GetHashCode());
      Console.WriteLine("Are they equal? = "+(val1.Equals(val2)));
      TypeCode type1 = val1.GetTypeCode();
      TypeCode type2 = val2.GetTypeCode();
      Console.WriteLine("TypeCode for val1 = "+type1);
      Console.WriteLine("TypeCode for val2 = "+type2);
   }
}

출력 결과

위 코드를 실행하면 다음과 같은 출력이 생성됩니다.

Value1 = 0
Value2 = 32767
HashCode for value1 = 0
HashCode for value2 = 2147450879
Are they equal? = False
TypeCode for val1 = Int16
TypeCode for val2 = Int16

예제 2

마지막으로 서로 다른 값으로 GetTypeCode() 메서드를 확인해 보겠습니다.

using System;
public class Demo {
   public static void Main() {
      short val1 = 23;
      short val2 = 0;
      Console.WriteLine("Value1 = "+val1);
      Console.WriteLine("Value2 = "+val2);
      Console.WriteLine("HashCode for value1 = "+val1.GetHashCode());
      Console.WriteLine("HashCode for value2 = "+val2.GetHashCode());
      Console.WriteLine("Are they equal? = "+(val1.Equals(val2)));
      TypeCode type1 = val1.GetTypeCode();
      TypeCode type2 = val2.GetTypeCode();
      Console.WriteLine("TypeCode for val1 = "+type1);
      Console.WriteLine("TypeCode for val2 = "+type2);
   }
}

출력 결과

Value1 = 23
Value2 = 0
HashCode for value1 = 1507351
HashCode for value2 = 0
Are they equal? = False
TypeCode for val1 = Int16
TypeCode for val2 = Int16

정리

Int16 구조체는 16비트 범위의 정수를 다룰 때 유용하며, GetHashCode()로 해시 코드를 얻고 GetTypeCode()로 타입 정보를 확인할 수 있습니다. 값의 범위가 작아도 되는 경우 int 대신 short(Int16)를 사용하면 메모리를 절약할 수 있다는 점을 기억하세요.