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

C# UInt32 구조체 완벽 가이드: 32비트 부호 없는 정수 다루기

C#의 UInt32 구조체는 32비트 부호 없는 정수(unsigned integer)를 나타내는 값 형식입니다. 표현할 수 있는 값의 범위는 최소 0부터 최대 4,294,967,295까지이며, 음수는 저장할 수 없습니다.

이 글에서는 UInt32 구조체에서 자주 사용되는 주요 메서드인 CompareTo()Equals()의 문법과 실제 활용 예제를 살펴보겠습니다.

UInt32.CompareTo() 메서드

UInt32.CompareTo() 메서드는 현재 인스턴스를 지정된 객체 또는 다른 UInt32 값과 비교하고, 두 값의 상대적인 크기를 나타내는 정수를 반환합니다.

문법

public int CompareTo (object val);
public int CompareTo (uint val);

첫 번째 문법은 비교 대상이 되는 객체(object)를 매개변수로 받고, 두 번째 문법은 비교할 부호 없는 정수(uint)를 매개변수로 받습니다.

반환값은 다음과 같이 해석할 수 있습니다.

  • 0: 현재 인스턴스와 비교 대상 값이 같은 경우
  • 0보다 작은 값: 현재 인스턴스가 비교 대상 값보다 작은 경우
  • 0보다 큰 값: 현재 인스턴스가 비교 대상 값보다 큰 경우

예제 1: uint 값끼리 비교하기

using System;
public class Demo {
    public static void Main(){
        uint val1 = 25;
        uint val2 = 55;
        int res = val1.CompareTo(val2);
        Console.WriteLine("반환값 (비교 결과) = " + res);
        if (res > 0)
            Console.WriteLine("val1 > val2");
        else if (res < 0)
            Console.WriteLine("val1 < val2");
        else
            Console.WriteLine("val1 = val2");
    }
}

출력 결과

반환값 (비교 결과) = -30
val1 < val2

25와 55를 비교했을 때 차이인 -30이 반환되며, val1이 val2보다 작다는 것을 확인할 수 있습니다.

예제 2: object 타입과 비교하기

using System;
public class Demo {
    public static void Main(){
        uint val1 = 25;
        object val2 = (uint)2;
        int res = val1.CompareTo(val2);
        Console.WriteLine("반환값 (비교 결과) = " + res);
        if (res > 0)
            Console.WriteLine("val1 > val2");
        else if (res < 0)
            Console.WriteLine("val1 < val2");
        else
            Console.WriteLine("val1 = val2");
    }
}

출력 결과

반환값 (비교 결과) = 23
val1 > val2

이번에는 object 타입으로 박싱된 uint 값을 비교했습니다. 25와 2를 비교한 결과 23이 반환되어 val1이 더 크다는 것이 출력됩니다.

UInt32.Equals() 메서드

UInt32.Equals() 메서드는 현재 인스턴스가 지정된 객체 또는 UInt32 값과 같은지 여부를 나타내는 불리언(bool) 값을 반환합니다.

문법

public override bool Equals (object ob);
public bool Equals (uint ob);

첫 번째 문법의 매개변수 ob는 현재 인스턴스와 비교할 객체이고, 두 번째 문법의 매개변수 ob는 비교할 32비트 부호 없는 정수입니다.

예제 1: 서로 다른 값 비교하기

using System;
public class Demo {
    public static void Main(){
        uint val1 = 52;
        uint val2 = 10;
        bool res = val1.Equals(val2);
        Console.WriteLine("반환값 (비교 결과) = " + res);
        if (res)
            Console.WriteLine("val1 = val2");
        else
            Console.WriteLine("val1 != val2");
    }
}

출력 결과

반환값 (비교 결과) = False
val1 != val2

52와 10은 서로 다른 값이므로 Equals() 메서드가 False를 반환합니다.

예제 2: 같은 값 비교하기

using System;
public class Demo {
    public static void Main(){
        uint val1 = 100;
        uint val2 = 100;
        bool res = val1.Equals(val2);
        Console.WriteLine("반환값 (비교 결과) = " + res);
        if (res)
            Console.WriteLine("val1 = val2");
        else
            Console.WriteLine("val1 != val2");
    }
}

출력 결과

반환값 (비교 결과) = True
val1 = val2

두 값이 모두 100으로 동일하므로 True가 반환됩니다.

정리

UInt32 구조체는 0부터 4,294,967,295까지의 범위를 가지는 32비트 부호 없는 정수를 다룰 때 유용합니다. CompareTo()는 두 값의 크기 관계를 정수로 반환하여 정렬이나 순서 비교에 적합하고, Equals()는 단순히 두 값이 같은지 여부만 판단할 때 사용합니다. 상황에 맞게 적절한 메서드를 선택해 활용하시기 바랍니다.