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

C# Math.BigMul() 메서드 완벽 정리 – 두 32비트 정수의 전체 곱을 Int64로 구하기

C#의 Math.BigMul() 메서드는 두 개의 32비트 정수(int)를 곱했을 때 발생할 수 있는 오버플로우 없이 전체 곱(full product)을 계산하는 메서드입니다. 일반적인 곱셈 연산자(*)는 결과가 int 범위를 벗어나면 잘려나가지만, BigMul()은 결과를 Int64(long) 타입으로 반환하므로 큰 수의 곱셈도 안전하게 처리할 수 있습니다.

문법(Syntax)

Math.BigMul() 메서드의 기본 문법은 다음과 같습니다.

public static long BigMul (int val1, int val2);

매개변수 설명

  • val1: 곱셈에 사용되는 첫 번째 32비트 정수
  • val2: 곱셈에 사용되는 두 번째 32비트 정수

반환값은 두 숫자를 곱한 전체 결과를 담은 long(Int64) 값입니다.

예제 1

아래 예제는 Int32의 최댓값(Int32.MaxValue) 두 개를 Math.BigMul()로 곱하는 코드입니다.

using System;
public class Demo {
    public static void Main(){
        int val1 = Int32.MaxValue;
        int val2 = Int32.MaxValue;
        Console.WriteLine("Product of two numbers = " + Math.BigMul(val1, val2));
    }
}

출력 결과

Product of two numbers = 4611686014132420609

Int32.MaxValue는 약 21억(2,147,483,647)으로, 이 값을 일반 int 곱셈으로 계산하면 오버플로우가 발생하지만, Math.BigMul()을 사용하면 정확한 전체 곱이 long 타입으로 반환됩니다.

예제 2

이번에는 임의의 두 정수를 곱해보겠습니다.

using System;
public class Demo {
    public static void Main(){
        Int32 val1 = 139897778;
        Int32 val2 = 217878786;
        Console.WriteLine("Product of two numbers = " + Math.BigMul(val1, val2));
    }
}

출력 결과

Product of two numbers = 30480758034737508

정리

Math.BigMul() 메서드는 다음과 같은 상황에서 특히 유용합니다.

  • 두 int 값의 곱이 int 범위(-21억 ~ +21억)를 초과할 가능성이 있을 때
  • 오버플로우로 인한 데이터 손실 없이 정확한 곱셈 결과가 필요할 때
  • 큰 수 연산을 별도의 라이브러리 없이 간단히 처리하고 싶을 때

.NET Core 3.0 이상 및 .NET Standard 2.1 이상 환경에서 사용할 수 있으며, 금융 계산, 해시 알고리즘, 과학적 계산 등 정밀한 곱셈이 필요한 분야에서 활용됩니다.