1. 전체 코드

namespace CSharpGrammar
{
    class Program
    {
       

        static void Main(string[] args)
        {

            // 십진법
            // 0,1,2,3,4,5,6,7,8,9

            // 이진법
            // 0b00 0b01 0b10 0b11

            // 16진법
            // 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
            // 0x
            
            
            // 비트연산을 할때 유용함

            // why 16진법인가?

            // 2진법은 숫자가 너무 빨리 커짐

            // 16진법은 이진수 4개마다 16진법 한자리

            // 컴퓨터는 사실상 이진법으로 저장함

            int hp = 100;
            hp = 0x64;
            hp = 0b01100100;
        }
    }
}

2. 진법이란?

진법(Notation System)이란 숫자를 표현하는 방식입니다.
우리가 흔히 사용하는 10진법(Decimal) 외에도, 컴퓨터에서는 2진법(Binary), 16진법(Hexadecimal)을 많이 사용합니다.


3. 진법 종류 및 특징

진법사용 숫자예시구분 방법특징
10진법 (Decimal)0~90, 1, 2, ... 9, 10, 11, 12일반 숫자 (100, 255)우리가 일반적으로 사용하는 숫자 체계
2진법 (Binary)0, 10b00, 0b01, 0b10, 0b110b 접두사 사용 (0b1010)컴퓨터가 직접 사용하는 숫자 체계
16진법 (Hexadecimal)0~9, A~F0x00, 0x01, ... 0x0F, 0x100x 접두사 사용 (0xFF)2진수를 4자리 단위로 축약 가능

4. 각 진법의 예제

📌 10진법 (Decimal)

int hp = 100;  // 일반적으로 사용하는 숫자 (십진법)
Console.WriteLine(hp); // 출력: 100

📌 2진법 (Binary)

int binaryNumber = 0b01100100; // 2진수 0b 접두사 사용 (100 = 01100100)
Console.WriteLine(binaryNumber); // 출력: 100

📌 16진법 (Hexadecimal)

int hexNumber = 0x64; // 16진수 0x 접두사 사용 (100 = 0x64)
Console.WriteLine(hexNumber); // 출력: 100

📌 결과 출력

100
100
100

모두 같은 값(100)이지만, 표현 방식이 다름!


5. 16진법을 사용하는 이유

이진법은 숫자가 너무 빨리 커짐

  • 예: 10진수 255
    • 2진수: 0b11111111 (8자리 필요)
    • 16진수: 0xFF (2자리로 표현 가능)

📌 예제:

int binary = 0b11111111;  // 255 (2진수)
int hex = 0xFF;           // 255 (16진수)
Console.WriteLine(binary); // 출력: 255
Console.WriteLine(hex);    // 출력: 255

2진법은 너무 길어지기 때문에, 16진법으로 축약하여 표현하면 더 깔끔함!


6. 2진수와 16진수의 관계

2진수 4자리는 16진수 1자리와 동일함
16진수를 사용하면 긴 2진수를 쉽게 표현할 수 있음

📌 예제

이진수  | 16진수
--------|------
0000    | 0
0001    | 1
0010    | 2
0011    | 3
0100    | 4
0101    | 5
0110    | 6
0111    | 7
1000    | 8
1001    | 9
1010    | A
1011    | B
1100    | C
1101    | D
1110    | E
1111    | F

예제 변환:
0b10001111 (2진수) = 0x8F (16진수)

📌 C# 코드 예제

int binaryValue = 0b10001111; // 2진수
int hexValue = 0x8F;          // 16진수
Console.WriteLine(binaryValue); // 출력: 143
Console.WriteLine(hexValue);    // 출력: 143

같은 값이지만 16진법은 더 간결하게 표현 가능!


profile
李家네_공부방

0개의 댓글