Home > CS > 2025 > πŸ’Ύ [CS] 1Day 1CS - 컴퓨터가 μ΄ν•΄ν•˜λŠ” 정보(1)

πŸ’Ύ [CS] 1Day 1CS - 컴퓨터가 μ΄ν•΄ν•˜λŠ” 정보(1)
CS

πŸ’Ύ [CS] 1Day 1CS - 컴퓨터가 μ΄ν•΄ν•˜λŠ” 정보(1)

πŸ“Œ Intro.

  • β†˜οΈŽ 컴퓨터가 μ–΄λ–»κ²Œ λ¬Έμžμ™€ 숫자λ₯Ό μΈμ‹ν•˜λŠ”μ§€, 그리고 κ·Έλ ‡κ²Œ ν‘œν˜„λœ 정적인 데이터가 λͺ…령어에 μ˜ν•΄ μ–΄λ–»κ²Œ μ‹€ν–‰λ˜λŠ”μ§€ 정리함.
  • β†˜οΈŽ CPUλŠ” 기본적으둜 0κ³Ό 1λ§Œμ„ 이해.
    • β†˜οΈŽ μ—¬κΈ°μ„œ 0κ³Ό 1을 λ‚˜νƒ€λ‚΄λŠ” κ°€μž₯ μž‘μ€ μ •λ³΄μ˜ λ‹¨μœ„λ₯Ό λΉ„νŠΈ(bit)라고 함.
  • β†˜οΈŽ 1λΉ„νŠΈ ➞ 0 λ˜λŠ” 1, 2개($2^1$)의 정보λ₯Ό ν‘œν˜„ν•  수 있음
    • β†˜οΈŽ 2λΉ„νŠΈ ➞ 4개($2^2$)의 정보, 3λΉ„νŠΈ ➞ 8개($2^3$)의 정보λ₯Ό ν‘œν˜„ν•  수 있음
      • β†˜οΈŽ 즉, NλΉ„νŠΈλŠ” ($2^N)$ 개의 정보λ₯Ό ν‘œν˜„ν•  수 있음.
  • β†˜οΈŽ ν”„λ‘œκ·Έλž¨ 크기λ₯Ό 말할 λ•ŒλŠ” λ°”μ΄νŠΈ(byte), ν‚¬λ‘œλ°”μ΄νŠΈ(kB), λ©”κ°€λ°”μ΄νŠΈ(MB), κΈ°κ°€λ°”μ΄νŠΈ(GB), ν…ŒλΌλ°”μ΄νŠΈ(TB) 등을 μ‚¬μš©.
    • β†˜οΈŽ λ°”μ΄νŠΈ(byte)λŠ” μ—¬λŸ λΉ„νŠΈλ₯Ό 묢은 λ‹¨μœ„λ₯Ό 말함.
      • β†˜οΈŽ ν•˜λ‚˜μ˜ λ°”μ΄νŠΈλ‘œ ν‘œν˜„ν•  수 μžˆλŠ” μ •λ³΄λŠ” $2^8 = 256$개
    • β†˜οΈŽ ν‚¬λ‘œλ°”μ΄νŠΈ, λ©”κ°€λ°”μ΄νŠΈ, κΈ°κ°€λ°”μ΄νŠΈ, ν…ŒλΌλ°”μ΄νŠΈ λ‹¨μœ„λŠ” λͺ¨λ‘ 이전 λ‹¨μœ„ 1,000개λ₯Ό 묢은 λ‹¨μœ„λ₯Ό 말함.
ꡬ뢄 λΉ„νŠΈ
1 byte 8 λΉ„νŠΈ
1 kB 1,000 λ°”μ΄νŠΈ
1 MB 1,000 ν‚¬λ‘œλ°”μ΄νŠΈ
1 GB 1,000 λ©”κ°€λ°”μ΄νŠΈ
1 TB 1,000 κΈ°κ°€λ°”μ΄νŠΈ
  • β†˜οΈŽ CPU κ΄€μ μ—μ„œμ˜ 정보 λ‹¨μœ„:
    • β†˜οΈŽ μ›Œλ“œ(Word) : CPUκ°€ ν•œ λ²ˆμ— μ²˜λ¦¬ν•  수 μžˆλŠ” λ°μ΄ν„°μ˜ 크기
  • β†˜οΈŽ ν”„λ‘œκ·Έλž¨μ˜ 크기가 2GB라고 ν•΄μ„œ CPU도 ν•œ λ²ˆμ— 2GBλ₯Ό 읽어 λ“€μ—¬ μ²˜λ¦¬ν•˜λŠ” 것이 μ•„λ‹ˆλ‹€.
    • β†˜οΈŽ CPUλŠ” ν”„λ‘œκ·Έλž¨μ„ μ›Œλ“œ(Word) λ‹¨μœ„λ‘œ 읽어 듀이고 μ²˜λ¦¬ν•œλ‹€.
      • β†˜οΈŽ λ§Œμ•½ CPUκ°€ ν•œ λ²ˆμ— 16λΉ„νŠΈλ₯Ό μ²˜λ¦¬ν•  수 μžˆλ‹€λ©΄ 1μ›Œλ“œ(Word)λŠ” 16λΉ„νŠΈκ°€ 되거, ν•œ λ²ˆμ— 32λΉ„νŠΈλ₯Ό μ²˜λ¦¬ν•  수 μžˆλ‹€λ©΄ 32λΉ„νŠΈκ°€ λ˜λŠ” 것이닀.
        • β†˜οΈŽ μ›Œλ“œμ˜ ν¬κΈ°λŠ” CPUλ§ˆλ‹€ λ‹€λ₯΄μ§€λ§Œ, ν˜„λŒ€ 컴퓨터 λŒ€λΆ€λΆ„μ˜ μ›Œλ“œ ν¬κΈ°λŠ” 32λΉ„νŠΈ, ν˜Ήμ€ 64λΉ„νŠΈμ΄λ‹€.

βœ…1️⃣ 데이터 - 0κ³Ό 1둜 숫자 ν‘œν˜„ν•˜κΈ°.

  • β†˜οΈŽ CPUλŠ” 컴퓨터 λ‚΄λΆ€μ—μ„œ 2진법(binary)을 μ‚¬μš©ν•΄ 2 이상, 0 μ΄ν•˜μ˜ 수λ₯Ό 이해함.
  • β†˜οΈŽ 컴퓨터가 μ‚¬μš©ν•˜λŠ” 2진법은 숫자 1을 λ„˜μ–΄κ°€λŠ” μ‹œμ μ— μžλ¦¬μ˜¬λ¦Όν•΄ 0κ³Ό 1, 2개의 숫자만으둜 λͺ¨λ“  수λ₯Ό ν‘œν˜„ν•¨.
  • β†˜οΈŽ 2μ§„μˆ˜λ‘œ ν‘œν˜„λœ μˆ˜λŠ” 숫자 뒀에 μ•„λž˜μ²¨μžλ‘œ (2)λ₯Ό λΆ™μ΄κ±°λ‚˜ 2μ§„μˆ˜ μ•žμ— 0bλ₯Ό λΆ™μž„.

  • β†˜οΈŽ 컴퓨터 λ‚΄λΆ€μ—μ„œ 2μ§„μˆ˜λ‘œ μ†Œμˆ˜λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 방법:
    • β†˜οΈŽ μ»΄ν“¨ν„°μ˜ μ†Œμˆ˜ ν‘œν˜„μ„ ν•™μŠ΅μ‹œ κ°€μž₯ μ€‘μš”ν•œ 핡심은 ν‘œν˜„ν•˜κ³ μž ν•˜λŠ” μ†Œμˆ˜μ™€ μ‹€μ œλ‘œ μ €μž₯된 μ†Œμˆ˜ 간에 μ˜€μ°¨κ°€ μ‘΄μž¬ν•  수 μžˆλ‹€λŠ” 점이닀.
      • β†˜οΈŽ μ˜ˆμ‹œ:
        ```python
        a = 0.1
        b = 0.2
        c = 0.3

      if a + b == c:
      print(β€œEqual”)
      else:
      print(β€œNot Equal”)
      ```

    • β†˜οΈŽ κ²°κ³Ό: β€˜Not Equal’
      • β†˜οΈŽ μ΄λŸ¬ν•œ μ˜€μ°¨λŠ” 비단 νŒŒμ΄μ¬μ—μ„œλ§Œ λ°œμƒν•˜λŠ” 것이 μ•„λ‹ˆκ³ , C/C++, Java, JS λ“± λ§Žμ€ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ β€˜Not Equal’이 결과둜 좜λ ₯λœλ‹€.
        • β†˜οΈŽ μ΄λŸ¬ν•œ 였차의 쑴재, κ·Έ λ°œμƒ 원인을 μ•Œμ§€ λͺ»ν•œλ‹€λ©΄ μ½”λ”© ν…ŒμŠ€νŠΈλ‚˜ 정밀도 높은 개발 업무에 μ œλŒ€λ‘œ λŒ€μ²˜ν•  수 μ—†λ‹€.
  • β†˜οΈŽ μ΄λŸ¬ν•œ μ˜€μ°¨κ°€ λ°œμƒν•˜λŠ” 이유:
    • β†˜οΈŽ 컴퓨터 λ‚΄λΆ€μ—μ„œλŠ” μ†Œμˆ˜μ μ„ λ‚˜νƒ€λ‚΄κΈ° μœ„ν•΄ λŒ€ν‘œμ μœΌλ‘œ 뢀동 μ†Œμˆ˜μ (floating point) ν‘œν˜„ 방식을 μ΄μš©ν•¨.
      • β†˜οΈŽ 이 λ°©μ‹μ˜ 정밀도에 ν•œκ³„κ°€ 있기 λ•Œλ¬Έμž„.
  • β†˜οΈŽ 뢀동 μ†Œμˆ˜μ (floating point) :
    • β†˜οΈŽ μ†Œμˆ˜μ μ΄ κ³ μ •λ˜μ–΄ μžˆμ§€ μ•Šμ€ μ†Œμˆ˜ ν‘œν˜„ λ°©μ‹μœΌλ‘œ, ν•„μš”μ— 따라 μ†Œμˆ˜μ μ˜ μœ„μΉ˜κ°€ 이동할 수 있고 μœ λ™μ (floating)μ΄λΌλŠ” 의미.
    • β†˜οΈŽ μ˜ˆμ‹œ:
      • β†˜οΈŽ 10μ§„μˆ˜ 123.123μ΄λΌλŠ” 수λ₯Ό $m Γ— 10^n$의 꼴둜 λ‚˜νƒ€λ‚΄λ©΄ $1.23123 Γ— 10^2$으둜 ν‘œν˜„ν•  μˆ˜λ„ 있고, $1231.23 Γ— 10^{-1}$으둜 ν‘œν˜„ κ°€λŠ₯.
        • β†˜οΈŽ μ—¬κΈ°μ—μ„œ 제곱으둜 ν‘œν˜„λœ 2와 -1을 μ§€μˆ˜(exponent), 1.23123κ³Ό 1231.23을 κ°€μˆ˜(significand)라고 함.
  • β†˜οΈŽ 2μ§„μˆ˜ μ²΄κ³„μ—μ„œμ˜ μ†Œμˆ˜ ν‘œν˜„:
    • β†˜οΈŽ $m Γ— 2^n$의 꼴둜 λ‚˜νƒ€λƒ„.
      • β†˜οΈŽ κ°€λ Ή 107.6640625λΌλŠ” 10μ§„μˆ˜ μ†Œμˆ˜κ°€ μžˆλ‹€κ³  κ°€μ •.
        • β†˜οΈŽ 이λ₯Ό 2μ§„μˆ˜λ‘œ λ‚˜νƒ€λ‚΄λ©΄ $1101011.1010101$이닀.
        • β†˜οΈŽ 이 2μ§„μˆ˜ μ†Œμˆ˜λŠ” $1.1010111010101 Γ— 2^6$으둜 ν‘œν˜„ν•  μˆ˜λ„ 있고, $110101110.10101 Γ— 2^{-2}$으둜 ν‘œν˜„ν•  수 있음.
          • β†˜οΈŽ 이 κ²½μš°μ— μ§€μˆ˜λŠ” 각각 $6$, $-2$이고, κ°€μˆ˜λŠ” $1.1010111010101$, $110101110.10101$이닀.
            • β†˜οΈŽ 2의 μ§€μˆ˜κ°€ μ–‘μˆ˜μΌ λ•ŒλŠ” $2^{μ†Œμˆ˜μ μ„\ μ™Όμͺ½μœΌλ‘œ\ μ΄λ™ν•œ\ 횟수}$, 2의 μ§€μˆ˜κ°€ 음수일 λ•ŒλŠ” $2^{μ†Œμˆ˜μ μ„\ 였λ₯Έμͺ½μœΌλ‘œ\ μ΄λ™ν•œ\ 횟수}$ 라고 생각해도 됨.
  • β†˜οΈŽ μ˜€λŠ˜λ‚  λŒ€λΆ€λΆ„μ˜ μ»΄ν“¨ν„°λŠ” 2μ§„μˆ˜μ˜ μ§€μˆ˜μ™€ κ°€μˆ˜λ₯Ό λ‹€μŒκ³Ό 같은 ν˜•μ‹μœΌλ‘œ μ €μž₯함.
    • β†˜οΈŽ 이와 같은 뢀동 μ†Œμˆ˜μ  μ €μž₯ 방식을 IEEE 754라고 함

  • β†˜οΈŽ κ·Έλ¦Όκ³Ό 같은 ν˜•νƒœλ‘œ μ†Œμˆ˜κ°€ μ €μž₯λœλ‹€κ³  ν•  λ•Œ, κ°€μˆ˜μ˜ μ •μˆ˜λΆ€μ—λŠ” 1둜 ν†΅μΌλœ μ •κ·œν™”ν•œ 수(normalized number)κ°€ μ €μž₯됨.
    • β†˜οΈŽ 즉, κ°€μˆ˜λŠ” $1.OOO…$의 ν˜•νƒœλ₯Ό 띄고 μžˆλ‹€.
    • β†˜οΈŽ μ•žμ„œ 예둜 λ“€μ—ˆλ˜ 2μ§„μˆ˜ $1101011.1010101$의 경우 $110101110.10101 Γ— 2^{-2}$이 μ•„λ‹Œ $1.1010111010101 Γ— 2^6$으둜 μ €μž₯λ˜λŠ” μ…ˆμ΄λ‹€.
    • β†˜οΈŽ 그럼 $2^{μ§€μˆ˜} Γ— 1.OOO…$의 ν˜•νƒœμ˜ μ†Œμˆ˜λ₯Ό μ €μž₯ν•  λ•ŒλŠ” μ§€μˆ˜μ— ν•΄λ‹Ήν•˜λŠ” κ°’κ³Ό $OOO…$에 ν•΄λ‹Ήν•˜λŠ” μ†Œμˆ˜ λΆ€λΆ„(fraction) λ§Œμ„ μ €μž₯ν•˜λ©΄ λœλ‹€.
      • β†˜οΈŽ μ–΄μ°¨ν”Ό $2^{μ§€μˆ˜}$의 2와 $1.OOO…$은 1은 ν†΅μΌλ˜μ–΄ μžˆλŠ” 값이기 λ•Œλ¬Έμ΄λ‹€.
        • β†˜οΈŽ λ”°λΌμ„œ 컴퓨터가 κ°€μˆ˜λ₯Ό μ €μž₯ν•  λ•ŒλŠ” (κ°€μˆ˜μΈ $1.OOO…$μ—μ„œ 1을 μ œμ™Έν•œ) OOO에 ν•΄λ‹Ήν•˜λŠ” μ†Œμˆ˜ λΆ€λΆ„λ§Œ μ €μž₯ν•˜κ²Œ λœλ‹€.
          • β†˜οΈŽ κ°€λ Ή $1.1010111010101 Γ— 2^6$의 κ°€μˆ˜λ₯Ό μ €μž₯ν•  λ•ŒλŠ” $1010111010101$이 μ €μž₯λ˜λŠ” 것이닀.

  • β†˜οΈŽ 컴퓨터가 μ§€μˆ˜λ₯Ό μ €μž₯ν•  λ•ŒλŠ” λ°”μ΄μ–΄μŠ€(bias) 값이 λ”ν•΄μ Έμ„œ μ €μž₯되며, μ΄λ•Œ λ°”μ΄μ–΄μŠ€ 값은 $2^{k-1}-1$(kλŠ” μ§€μˆ˜μ˜ λΉ„νŠΈ 수)이닀.
    • β†˜οΈŽ μ§€μˆ˜λ₯Ό ν‘œν˜„ν•˜κΈ° μœ„ν•΄ 8λΉ„νŠΈκ°€ μ‚¬μš©λ˜μ—ˆλ‹€λ©΄ λ°”μ΄μ–΄μŠ€ 값은 $2^7-1$인 127이고, 11λΉ„νŠΈκ°€ μ‚¬μš©λ˜μ—ˆλ‹€λ©΄ λ°”μ΄μ–΄μŠ€ 값은 $2^{10}-1$인 1,023이닀
      • β†˜οΈŽ 즉, $1.1010111010101 Γ— 2^6$이 32λΉ„νŠΈλ‘œ μ €μž₯될 λ•ŒλŠ” 127+6인 133(2μ§„μˆ˜ 10000101)으둜 μ €μž₯λ˜λŠ” μ…ˆμ΄λ‹€.
  • β†˜οΈŽ 결과적으둜 $1101011.1010101$(10μ§„μˆ˜ 107.6640625)λΌλŠ” μˆ˜λŠ” λ‹€μŒκ³Ό 같이 μ €μž₯λ©λ‹ˆλ‹€.
  • β†˜οΈŽ 10μ§„μˆ˜ μ†Œμˆ˜λ₯Ό 2μ§„μˆ˜λ‘œ ν‘œν˜„ν•  λ•Œ, 10μ§„μˆ˜ μ†Œμˆ˜μ™€ 2μ§„μˆ˜ μ†Œμˆ˜μ˜ ν‘œν˜„μ΄ λ”± λ§žμ•„λ–¨μ–΄μ§€μ§€ μ•Šμ„ 수 μžˆλ‹€λŠ” 점을 μœ μ˜ν•΄μ•Ό ν•œλ‹€.
  • β†˜οΈŽ μ»΄ν“¨ν„°μ˜ μ €μž₯곡간은 ν•œμ •μ μ΄κΈ° λ•Œλ¬Έμ— λ¬΄ν•œνžˆ λ§Žμ€ μ†Œμˆ˜μ μ„ μ €μž₯ν•  μˆ˜λŠ” μ—†λ‹€.
    • β†˜οΈŽ κ·Έλž˜μ„œ λ”± λ§žμ•„λ–¨μ–΄μ§€μ§€ μ•ŠλŠ” μ†Œμˆ˜λ₯Ό ν‘œν˜„ν•  λ•ŒλŠ” 일뢀 μ†Œμˆ˜μ μ„ μƒλž΅ν•˜μ—¬ μ €μž₯ν•œλ‹€.
      • β†˜οΈŽ κ·Έλž˜μ„œ μ˜€μ°¨κ°€ λ°œμƒν•˜λŠ” 것이닀.

βœ…πŸ™‹β€β™‚οΈ μ—¬κΈ°μ„œ 잠깐!

πŸ“Œ 16진법

  • β†˜οΈŽ 2μ§„λ²•μ—λŠ” 단점이 있음.
    • β†˜οΈŽ ν‘œν˜„ν•˜λŠ” 숫자의 길이가 λ„ˆλ¬΄ κΈΈμ–΄μ§„λ‹€λŠ” 점.
    • β†˜οΈŽ κ°€λ Ή 10μ§„μˆ˜ β€˜128’을 2μ§„μˆ˜λ‘œ ν‘œν˜„ν•˜λ©΄ β€˜100000000β‚β‚‚β‚Žβ€™ μ—¬λŸ 자리의 μˆ«μžκ°€ ν•„μš”ν•¨.
      • β†˜οΈŽ κ·Έλž˜μ„œ 컴퓨터가 μ΄ν•΄ν•˜λŠ” 정보λ₯Ό ν‘œν˜„μ‹œ 16μ§„μˆ˜λ„ ν•¨κ»˜ μ‚¬μš©ν•¨.
  • β†˜οΈŽ 16μ§„μˆ˜λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 16진법(hexadecimal)은 숫자 15λ₯Ό λ„˜μ–΄κ°€λŠ” μ‹œμ μ— μžλ¦¬μ˜¬λ¦Όμ„ ν•˜λŠ” 숫자 ν‘œν˜„ λ°©μ‹μž„.
  • β†˜οΈŽ 16진법 μ²΄κ³„μ—μ„œλŠ” 10μ§„μˆ˜ 10, 11, 12, 13, 14, 15λ₯Ό 각각 A, B, C, D, E, F둜 ν‘œκΈ°ν•¨
10μ§„μˆ˜ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 …
16μ§„μˆ˜ 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 …
  • β†˜οΈŽ 16μ§„μˆ˜λ‘œ ν‘œν˜„λœ μˆ˜λŠ” 뒀에 μ•„λž˜μ²¨μžλ‘œ (16)을 λΆ™μ΄κ±°λ‚˜ 16μ§„μˆ˜ μ•žμ— 0xλ₯Ό λΆ™μž„.
  • β†˜οΈŽ 16μ§„μˆ˜μ˜ ν™œμš©:
    • β†˜οΈŽ μ†ŒμŠ€ μ½”λ“œμ— 16μ§„μˆ˜λ₯Ό 직접 쓰기도 함.
    • β†˜οΈŽ MAC μ£Όμ†Œ
    • β†˜οΈŽ IPv6 μ£Όμ†Œ ν‘œν˜„