전체 코드

namespace CSharpGrammar
{
    class Program
    {
       

        static void Main(string[] args)
        {

            // 실질적으로 내부적으로 데이터는 이진법으로 저장

            // 이진법은 2배씩 늘어남

            // ex3

            // 맨 앞의 전원을 누르면 음수로 표현됨

            // 2의 보수법

            // 최상위 비트만 1인 경우 가장 작은 숫자

            // 모든 비트가 1인 경우 가장 큰 숫자

        }
    }
}

1. 컴퓨터는 2진법으로 데이터를 저장한다

/// 실제로 어떤 숫자를 컴퓨터에 저장한다고 하면 컴퓨터는 2진법으로 저장을 하고있다.

분석

  • 2진법(Binary System):
    • 컴퓨터는 데이터를 전기적인 신호(켜짐/꺼짐, 1/0)로 저장하므로, 2진법이 컴퓨터의 기본 숫자 체계입니다.
    • 우리가 사용하는 10진법 숫자는 컴퓨터 내부에서 2진수로 변환되어 저장됩니다.
    • 예를 들어:
      • 10진수 20은 2진수로 00010100입니다.

2. 윈도우 계산기: 프로그래머 모드

/// 윈도우 계산기 - 프로그래머로 가면 이렇게 비트 계산기를 쓸 수 있음

분석

  • 비트 계산기 사용:
    • Windows 계산기의 프로그래머 모드는 2진수, 8진수, 10진수, 16진수 간 변환을 시각적으로 보여줍니다.
    • 이를 통해 컴퓨터가 내부적으로 데이터를 어떻게 표현하고 저장하는지 확인할 수 있습니다.
    • 예를 들어:
      • 10진수 20 → 2진수 00010100 → 16진수 0x14.

3. 정수의 저장 방식: 2의 보수법

/// 데이터가 저장되는 방식은 2의 보수법을 사용하여 저장되고 있다.

분석

  • 2의 보수법(Two's Complement):
    • 컴퓨터는 음수를 표현할 때 2의 보수법을 사용합니다.
    • 이는 음수와 양수를 동일한 산술 연산(덧셈/뺄셈)으로 처리할 수 있게 하며, 연산을 간소화합니다.
    • 2의 보수법을 사용하는 이유:
      • -0을 없애기 위해: 1의 보수법에서는 +0-0이 별도로 존재하지만, 2의 보수법에서는 단 하나의 0만 존재합니다.
      • 덧셈과 뺄셈이 같은 하드웨어에서 동작하도록 단순화합니다.

4. 2의 보수법으로 음수 표현

/// 음수 표현시 2의 보수 사용하는 이유
/// 👉 0을 +0 -0 두가지로 표현하지 않기 위해 사용.
/// -0을 없애기 위해 전체 비트에 1을 더해 -0을 하나 밖에 없는 진짜 0으로 만들어준다.

분석

  1. 양수 → 음수 변환 방법:

    • 주어진 양수를 2진수로 변환합니다.
    • 보수 취하기: 모든 비트를 반전시킵니다(0 → 1, 1 → 0).
    • +1을 더해 최종 결과를 얻습니다.
    • 예:
      • 5(10진수) → 00000101(2진수)
      • 비트 반전: 11111010
      • +1: 11111011 (10진수 -5).
  2. -0 제거:

    • 2의 보수법을 사용하면 음수 표현에서 -0이 제거됩니다.
    • 예:
      • 1의 보수법에서는 00000000(+0)과 11111111(-0)이 존재.
      • 2의 보수법에서는 11111111이 -1로 변환되므로 0은 단 하나만 존재.

5. 음수와 양수의 범위

/// 최상위 비트만 1인 숫자가 가장 작음
/// 각 지리수마다 2배씩 늘어남

분석

  1. 최상위 비트(MSB):

    • 최상위 비트는 부호 비트로 사용됩니다:
      • 0: 양수
      • 1: 음수
    • 예:
      • 8비트에서 10000000-128(가장 작은 값)을 나타냅니다.
  2. 범위 증가:

    • 비트 수가 1비트 증가할 때마다 표현 가능한 숫자의 범위는 2배씩 증가합니다.
    • 예:
      • 8비트: -128 ~ 127
      • 16비트: -32,768 ~ 32,767
      • 32비트: -2,147,483,648 ~ 2,147,483,647

6. 예제: 계산기 출력 분석

이미지 분석

  • 20(10진수)가 다양한 진법으로 변환된 예제:
    • HEX(16진수): 0x14
      • 16진수는 10진수 20을 간결하게 표현합니다.
    • DEC(10진수): 20
      • 우리가 익숙한 일반적인 숫자 체계.
    • OCT(8진수): 24
      • 8진수로 표현된 값.
    • BIN(2진수): 00010100
      • 20을 2진수로 변환한 결과.

profile
李家네_공부방

0개의 댓글