์ด์ง„์ˆ˜๋กœ ํ‘œํ˜„ํ•˜๊ธฐ

date:
2025-07-31
order:
2

์ž์—ฐ์ˆ˜

์ž์—ฐ์ˆ˜๋ฅผ ์ด์ง„๋ฒ•์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋งค์šฐ ์ต์ˆ™ํ•˜๋‹ค.
์ด๊ฑธ ํŒŒ์ด์ฌ์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์ด๋ ‡๋‹ค.

def NtS(n):# natural numbers to strings
if n > 1:
return NtS(n // 2) + str(n % 2)
else:
return str(n % 2)
print(NtS(236))
# 11101100
print(NtS(19))
# 10011

โ€‹ํ•ด๋‹น ์ˆซ์ž๋ฅผ 2๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ (0 or 1)์„ ๊ธฐ์ž….
๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ๊ทธ ์ˆซ์ž๋ฅผ 2๋กœ ๋‚˜๋ˆˆ๋’ค์— ๋ฐ˜๋ณต.
์–ธ์ œ๊นŒ์ง€? : n์ด 2 ๋ฏธ๋งŒ์ผ ๋•Œ ๊นŒ์ง€.

์Œ์ˆ˜

์œ„์˜ NtS()๊ฒฐ๊ณผ ์•ž์— ์–‘์ˆ˜๋ผ๋ฉด 0์„ ์Œ์ˆ˜๋ผ๋ฉด 1์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
์ด๊ฑด ๊ณผ๊ฑฐ์˜ ๋ฐฉ๋ฒ•์ด๊ณ  ์š”์ฆ˜์˜ ๋ฐฉ๋ฒ•์€ ๋ฐ‘์—์„œ ์„œ์ˆ .

์–ด๋–ป๊ฒŒ ๊ตฌ๋ณ„ํ•˜๋‚˜?

์œ„์—์„œ๋„ ๋ณด๋ฉด NtS(19)์˜ ๊ฒฐ๊ณผ๋ฌผ์€ 10011์ธ๋ฐ, 19๋Š” ์–‘์ˆ˜๊ฐ€ ์•„๋‹Œ๊ฐ€?
๋งจ ์•ž์— ์žˆ๋Š”๊ฒŒ ์Œ์ˆ˜์™€ ์–‘์ˆ˜๋ฅผ ๊ตฌ๋ณ„ํ•˜๋Š” ์šฉ๋„๋กœ ์ถ”๊ฐ€ํ•œ ๋น„ํŠธ์ธ์ง€ ์•„๋‹Œ์ง€ ์–ด๋–ป๊ฒŒ ์•Œ๊นŒ?
๊ทธ๋Ÿฌ๋ฉด ๋” ๊ทผ๋ณธ์ ์ธ ์งˆ๋ฌธ์œผ๋กœ ๋„˜์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค.
10011010101 ์ด๋ ‡๊ฒŒ ์žˆ๋Š”๊ฒŒ ์• ์ดˆ์— ์ˆซ์ž์ธ๊ฑธ ์šฐ๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ ์•Œ๊นŒ?
๊ฐ„๋‹จํžˆ ๋Œ€๋‹ตํ•˜์ž๋ฉด ๊ทธ๋Ÿด ํ•„์š”๊ฐ€ ์—†๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•ด๋‹น ์ž๋ฃŒ์˜ ์ž๋ฃŒํ˜•์„ ๋ฏธ๋ฆฌ ์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์—.
๋˜‘๊ฐ™์€ 1110101์ด๋ผ๋„ ๊ทธ๊ฒŒ int์ธ์ง€ string์ธ์ง€ ์•„๋‹ˆ๋ฉด ํ˜น์€ ๋‹ค๋ฅธ ๋ฌด์—‡๊ฐ€์ธ์ง€์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ํ•ด์„๋œ๋‹ค๋Š”๊ฒƒ์ด๋‹ค.

Two's complement representation (2์˜ ๋ณด์ˆ˜ ๋ฐฉ์‹)

์—ฌ๊ธฐ์„œ๋Š” ์ •ํ™•ํžˆ ์š”์ฆ˜์€ ์–ด๋–ป๊ฒŒ ์Œ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ๋ ค์ค€๋‹ค.
4๋น„ํŠธ ํ‘œํ˜„๋ฒ•์—์„œ -8์„ ๋‚˜ํƒ€๋‚ด๋ณด์ž.
$n=4-1=3$ $ZtS_{3}(โˆ’8) = NtS_4(2^4โˆ’8)=1000$

4๋น„ํŠธ ์•ˆ์—์„œ -8๊ณผ 8์€ ๊ฐ™๋‹ค. ๊ทธ๋ž˜์„œ ๋งจ ์•ž์˜ ๋น„ํŠธ๋ฅผ ๋ถ€ํ˜ธ ๋น„ํŠธ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์‹ค์ง์ ์œผ๋กœ n-1๊ฐœ์˜ ๋น„ํŠธ๋กœ๋งŒ ์ˆซ์ž๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ๋ฐ–์— ์—†๋Š”๊ฒƒ.

์œ ๋ฆฌ์ˆ˜

-5/8 ์ด๋ผ๋Š” ์œ ๋ฆฌ์ˆ˜๋ฅผ ์–ด๋–ป๊ฒŒ ํ‘œํ˜„ํ• ๊นŒ.
-5 -> 1101, 8->01000 ํ•˜๋ฉด (1101,01000) ๋‘ ์ด์ง„์ˆ˜๊ฐ€ ๋‚˜์˜จ๋‹ค.
์ด๊ฑธ ๊ฐ ์ˆซ์ž๋ฅผ ๋‘๋ฒˆ์”ฉ ๋ฐ˜๋ณตํ•œ๋‹ค. 0์€ 00์œผ๋กœ 1์€ 11๋กœ.
11110011,0011000000 ์ด ๋˜๊ณ  ๊ทธ ๋‘˜ ์‚ฌ์ด์— 01์„ ๋„ฃ๊ณ  ์žˆ๋Š”๋‹ค.
11110011 01 0011000000(๊ตฌ๋ณ„ํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์ŠคํŽ˜์ด์Šค๋ฅผ ๋„ฃ์Œ) = -5/8

์‹ค์ˆ˜(๋ถ€๋™์†Œ์ˆ˜์  ํ‘œ๊ธฐ)

์–ด๋–ค ์‹ค์ˆ˜ x๊ฐ€ ์žˆ์œผ๋ฉด x์™€ ๊ทผ์ ‘ํ•œ $b * 2^e$ ๋ฅผ ์ฐพ์•„์„œ (b,e) ์Œ์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค.
12.75 ์€ ์ด๋ ‡๊ฒŒ ์ด์ง„์ˆ˜๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

  1. ์ด์ง„๋ฒ• ๋ณ€ํ™˜
    12๋Š” ์ด์ง„์ˆ˜๋กœ 1100
    $0.75 = 0.5 + 0.25 = 1/2 + 1/2^2 = 0.11$ ๋‘˜์„ ํ•ฉ์ณ์„œ 1100.11

  2. Scientific notation
    1100.11์ด๋ž€ ์ˆซ์ž๋ฅผ ์•ž์— ํ•œ ์ž๋ฆฌ๋งŒ ๋‚จ๊ธฐ๋„๋ก ์†Œ์ˆ˜์ ์„ ์˜ฎ๊ธฐ๋ฉด
    1.10011์ด ๋˜๊ณ  ์†Œ์ˆ˜์ ์€ 3์ž๋ฆฌ๋ฅผ ์˜ฎ๊ฒผ์œผ๋‹ˆ $1.10011 * 2^3$ ์ด๋ผ๊ณ  ํ‘œ๊ธฐ.

  3. ๊ฐ ๋ถ€๋ถ„ ๊ตฌํ•˜๊ธฐ
    ๋ถ€ํ˜ธ: 12.75๋Š” ์–‘์ˆ˜๋‹ˆ๊นŒ sign bit์€ 0.
    ์ง€์ˆ˜: 3 + 127 = 130 = 10000010
    ๊ฐ€์ˆ˜: 10011 (์œ„์˜ 2๋‹จ๊ณ„ ์ˆซ์ž์—์„œ ์†Œ์ˆ˜์  ๋’ค ๋ถ€๋ถ„๋งŒ ๊ฐ€์ ธ์˜ค๊ณ  ๋‚˜๋จธ์ง€๋Š” 0์œผ๋กœ)
    12.75 = 0 100000010 10011000000000000000000

12.3 ์ฒ˜๋Ÿผ ๋”ฑ ๋–จ์–ด์ง€์ง€ ์•Š๋Š” ์‹ค์ˆ˜๋Š”?
12 -> 1100์€ ๋™์ผ.
0.3์€ ์–ด๋–ป๊ฒŒ ๊ตฌํ•˜๋‚˜?
0.3 ๋ฅผ 2์”ฉ ๊ณฑํ•˜๋ฉด์„œ ์†Œ์ˆ˜์  ์•ž์— ์ˆซ์ž๋ฅผ ์ ๊ณ  ๋ฒ„๋ฆฐ๋‹ค.
0.3 * 2 = 0.6 -> 0
0.6 * 2 = 1.2 -> 1
0.2 * 2 = 0.4 -> 0
0.4 * 2 = 0.8 -> 0
0.8 * 2 = 1.6 -> 1
์ด๋ ‡๊ฒŒ ๋ฌดํ•œํžˆ ๊ฐ€๋‹ค๊ฐ€ ์ •ํ•ด์ง„ ์ž๋ฆฟ์ˆ˜์—์„œ ๋ฉˆ์ถ˜๋‹ค.(๋ณดํ†ต์€ 23๋น„ํŠธ. ์™œ๋ƒํ•˜๋ฉด float 32๋น„ํŠธ์—์„œ ๋ถ€ํ˜ธ 1๋น„ํŠธ, ์ง€์ˆ˜ 8๋น„ํŠธ ๋ฅผ ๋นผ๋ฉด 23๋น„ํŠธ๋งŒ ๋‚จ๊ธฐ ๋•Œ๋ฌธ์—)
๊ทธ๋ž˜์„œ 1100.01001.......0 ๊นŒ์ง€ ๊ตฌํ•œ๋‹ค์Œ์— ๊ทธ๊ฑธ
์ •๊ทœํ™”๋ฅผ ๊ฑฐ์ณ 1.10001001......0 * 2^3
๊ทธ๋ž˜์„œ 12.3 = 0 10000010 10001001100110011001101