2์ ๋ณด์ ๊ณ์ฐ๊ธฐ๋?
2์ ๋ณด์(two's complement)๋ ์ปดํจํฐ๊ฐ ์ ํด์ง ๋นํธ ์ ์์์ ๋ถํธ ์๋ ์ ์๋ฅผ ํํํ๋ ํ์ค ๋ฐฉ์์ ๋๋ค. ์ด ๊ณ์ฐ๊ธฐ๋ 10์ง์์ n๋นํธ ๋ ์ง์คํฐ ํญ์ ์ ๋ ฅ๋ฐ์, ํด๋น ๊ฐ์ด 2์ ๋ณด์ ๋นํธ ํจํด์ผ๋ก ์ด๋ป๊ฒ ์ ์ฅ๋๋์ง, ๊ทธ ๋นํธ๋ค์ด ๋ถํธ ์๋ ๊ฐ์ผ๋ก๋ ๋ฌด์์ ๋ํ๋ด๋์ง, ๊ทธ๋ฆฌ๊ณ ๋ถํธ ์๋ ์๋ก๋ ์ด๋ป๊ฒ ํด์๋๋์ง๋ฅผ ๋ณด์ฌ์ค๋๋ค. ์์์ ์์ ์ ๋ ฅ ๋ชจ๋์ ๋ํด ๋์ํฉ๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ
์ธ์ฝ๋ฉํ๋ ค๋ 10์ง์ ๊ฐ๊ณผ ๋นํธ ์(๋ณดํต 8, 16, 32)๋ฅผ ์ ๋ ฅํ์ธ์. ๊ณ์ฐ๊ธฐ๋ ๋ชจ๋๋ก ์ฐ์ฐ์ ์ฌ์ฉํด ๊ฐ์ n๋นํธ ๋ ์ง์คํฐ์ ๋ง์ถฐ ๊ฐ์ธ๊ณ , 2์ง์ ํํ์ ๋ณด์ฌ์ค ๋ค ๋ถํธ ์๋ ํด์์ผ๋ก ๋์ฝ๋ฉํฉ๋๋ค. ์์ ์ ๋ ฅ์ ์๋์ผ๋ก 2์ ๋ณด์ ํํ๋ก ์ ์ฅ๋ฉ๋๋ค.
๊ณต์ ์ค๋ช
๊ฐ \(x\)๋ฅผ \(n\)๋นํธ์ ์ ์ฅํ๋ ค๋ฉด, ์ ์ฅ๋๋(๋ถํธ ์๋) ํจํด์ ๋ค์๊ณผ ๊ฐ์ด ๊ณ์ฐํฉ๋๋ค.
$$\text{stored} = \left(\left(x \bmod 2^{n}\right) + 2^{n}\right) \bmod 2^{n}$$์ ์ฅ๋ ๊ฐ์ 2์ ๋ณด์(์์ํ)๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$$\text{twos} = \left(2^{n} - \text{stored}\right) \bmod 2^{n}$$\(n\)๋นํธ ํจํด์ ๋ถํธ ์๋ ์๋ฏธ๋ฅผ ๋์ฝ๋ฉํ๋ ค๋ฉด: ํจํด์ด \(2^{n-1}\) ์ด์์ด๋ฉด ๊ฐ์ \(\text{pattern} - 2^{n}\) (์์)์ด๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ํจํด ์์ฒด๊ฐ ๊ฐ์ด ๋ฉ๋๋ค.
์์ ๋ก ์ดํด๋ณด๊ธฐ
-5๋ฅผ 8๋นํธ๋ก ์ธ์ฝ๋ฉํด ๋ด ์๋ค. ์ฌ๊ธฐ์ \(2^{8} = 256\) ์ด๋ฏ๋ก \(\text{stored} = \left(\left(-5 \bmod 256\right) + 256\right) \bmod 256 = 251\) ์ ๋๋ค. 2์ง์๋ก \(251 = 11111011\) ์ ๋๋ค. 251์ ๋์ฝ๋ฉํ๋ฉด: \(251 \ge 2^{7}\ (128)\) ์ด๋ฏ๋ก ๋ถํธ ์๋ ๊ฐ์ \(251 - 256 = -5\) ๊ฐ ๋ฉ๋๋ค. 251์ 2์ ๋ณด์๋ \(\left(256 - 251\right) \bmod 256 = 5\) ๋ก, ํฌ๊ธฐ(์ ๋๊ฐ)์ ์ผ์นํฉ๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
์์๋ ์ ํฐ 2์ง์ ํจํด์ฒ๋ผ ๋ณด์ด๋์? ์์ชฝ ๋นํธ๊ฐ ๋ชจ๋ 1์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. \(n\)๋นํธ ๋ถํธ ์๋ ์ฐ์ฐ์์ ๋งจ ์ ๋นํธ๊ฐ 1์ด๋ฉด ์์๋ฅผ ์๋ฏธํ๋ฏ๋ก, 11111011์ 251์ด ์๋๋ผ -5์ ๋๋ค.
n๋นํธ์๋ ์ด๋ค ๋ฒ์๊ฐ ๋ค์ด๊ฐ๋์? ๋ถํธ ์๋ ๊ฐ์ \(-2^{n-1}\)๋ถํฐ \(2^{n-1} - 1\)๊น์ง์ ๋๋ค. 8๋นํธ๋ผ๋ฉด -128๋ถํฐ 127๊น์ง์ฃ .
์ซ์๊ฐ ๋๋ฌด ํฌ๋ฉด ์ด๋ป๊ฒ ๋๋์? ๋ ์ง์คํฐ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๊ฐ์ ๋ชจ๋๋ก ์ฐ์ฐ์ ์ํด ์ํ(์ค๋ฒํ๋ก)๋ฉ๋๋ค. ์ค์ ํ๋์จ์ด์ ๋๊ฐ์ ๋ฐฉ์์ ๋๋ค.