์์ฐ์
์์ฐ์๋ฅผ ์ด์ง๋ฒ์ผ๋ก ํํํ๋ ๋ฐฉ๋ฒ์ ๋งค์ฐ ์ต์ํ๋ค.
์ด๊ฑธ ํ์ด์ฌ์ผ๋ก ํํํ๋ฉด ์ด๋ ๋ค.
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 ์ ์ด๋ ๊ฒ ์ด์ง์๋ก ๋ณํ๋๋ค.
-
์ด์ง๋ฒ ๋ณํ
12๋ ์ด์ง์๋ก 1100
$0.75 = 0.5 + 0.25 = 1/2 + 1/2^2 = 0.11$ ๋์ ํฉ์ณ์1100.11 -
Scientific notation
1100.11์ด๋ ์ซ์๋ฅผ ์์ ํ ์๋ฆฌ๋ง ๋จ๊ธฐ๋๋ก ์์์ ์ ์ฎ๊ธฐ๋ฉด
1.10011์ด ๋๊ณ ์์์ ์ 3์๋ฆฌ๋ฅผ ์ฎ๊ฒผ์ผ๋ $1.10011 * 2^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