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

C# 7.0의 이진 리터럴(Binary Literal)과 숫자 구분자(Digit Separator) 완벽 정리

C# 7 이전에는 변수에 10진수와 16진수 값만 할당할 수 있었습니다. 하지만 C# 7.0에서 이진 리터럴(Binary Literal)이 새롭게 도입되면서, 변수에 2진수 값을 직접 할당할 수 있게 되었습니다.

이진 리터럴은 접두사 0b 또는 0B를 붙여 표현합니다. 예를 들어 0b1000001은 십진수로 65에 해당하며, 아스키(ASCII) 코드로는 문자 'A'를 나타냅니다.

숫자 구분자(Digit Separator)란?

숫자 구분자는 밑줄(_) 하나로 표현되며, 모든 숫자 리터럴 내부 어디에든 삽입하여 가독성을 높이는 용도로 사용할 수 있습니다. 특히 자릿수가 많은 큰 숫자를 다룰 때 매우 유용합니다.

컴파일러는 밑줄을 무시하기 때문에, 1_00_00_00_00_000과 같이 작성해도 실제로는 100000000000으로 해석됩니다.

이진 리터럴 예제

class Program{
    public static void Main(){
        var bn = 0b1000001;
        System.Console.WriteLine(bn.GetType());
        System.Console.WriteLine(Convert.ToChar(bn));
        Console.ReadLine();
    }
}

출력 결과

System.Int32
A

위 예제에서는 2진수 0b1000001(십진수 65)를 var 키워드로 선언했습니다. 컴파일러는 이 값을 System.Int32 타입으로 추론하며, Convert.ToChar() 메서드를 통해 해당하는 아스키 문자 'A'가 출력됩니다.

숫자 구분자 예제

class Program{
    public static void Main(){
        long Salary = 1_00_00_00_00_000;
        System.Console.WriteLine(Salary.GetType());
        System.Console.WriteLine(Salary);
        Console.ReadLine();
    }
}

출력 결과

System.Int64
100000000000

위 예제에서는 밑줄로 자릿수를 구분한 큰 숫자를 long 타입 변수에 저장했습니다. 변수의 타입은 System.Int64로 확인되며, 출력 시에는 밑줄이 모두 제거된 실제 값 100000000000이 표시됩니다.

이처럼 C# 7.0의 이진 리터럴과 숫자 구분자를 활용하면 비트 연산용 상수나 큰 금액 등을 훨씬 직관적이고 읽기 쉬운 코드로 작성할 수 있습니다.