

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;
}
}
}
진법(Notation System)이란 숫자를 표현하는 방식입니다.
우리가 흔히 사용하는 10진법(Decimal) 외에도, 컴퓨터에서는 2진법(Binary), 16진법(Hexadecimal)을 많이 사용합니다.
| 진법 | 사용 숫자 | 예시 | 구분 방법 | 특징 |
|---|---|---|---|---|
| 10진법 (Decimal) | 0~9 | 0, 1, 2, ... 9, 10, 11, 12 | 일반 숫자 (100, 255) | 우리가 일반적으로 사용하는 숫자 체계 |
| 2진법 (Binary) | 0, 1 | 0b00, 0b01, 0b10, 0b11 | 0b 접두사 사용 (0b1010) | 컴퓨터가 직접 사용하는 숫자 체계 |
| 16진법 (Hexadecimal) | 0~9, A~F | 0x00, 0x01, ... 0x0F, 0x10 | 0x 접두사 사용 (0xFF) | 2진수를 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)이지만, 표현 방식이 다름!
255 0b11111111 (8자리 필요) 0xFF (2자리로 표현 가능) 📌 예제:
int binary = 0b11111111; // 255 (2진수)
int hex = 0xFF; // 255 (16진수)
Console.WriteLine(binary); // 출력: 255
Console.WriteLine(hex); // 출력: 255
➡ 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진법은 더 간결하게 표현 가능!