1. ๋ ๋นํธ๋ฅผ ์๋ก ๋ํ ๊ฒฐ๊ณผ๋ ๋ ๋นํธ๋ฅผ XOR ํ ๊ฐ๊ณผ ๊ฐ๊ณ ์ฌ๋ฆผ์ ๋ ๋นํธ๋ฅผ AND ํ ์ฐ์ฐ๊ณผ ๊ฐ๋ค.
- ๋ ๋นํธ์ ํฉ
0+0=0 โ ํฉ๋นํธ ๊ฒฐ๊ณผ: 0
0+1=1 โ ํฉ๋นํธ ๊ฒฐ๊ณผ: 1
1+0=1 โ ํฉ๋นํธ ๊ฒฐ๊ณผ: 1
1+1=10 โ ํฉ๋นํธ ๊ฒฐ๊ณผ: 10
- XOR ์ฐ์ฐ (Exclusive OR, ๋ฐฐํ์ ๋ ผ๋ฆฌํฉ)
- XOR ์ฐ์ฐ์ด๋? : ๋ ๊ฐ์ ์ ๋ ฅ์ด ๋ค๋ฅผ ๋ 1์ ์ถ๋ ฅํ๊ณ , ๊ฐ์ผ๋ฉด 0์ ์ถ๋ ฅํ๋ ์ฐ์ฐ
0 0=0 โ XOR ๊ฒฐ๊ณผ: 0
0 1=1 โ XOR ๊ฒฐ๊ณผ: 1
1 0=1 โ XOR ๊ฒฐ๊ณผ: 1
1 1=10 (์ฆ, ํฉ ๋นํธ๋ 0์ด๊ณ ์ฌ๋ฆผ์ด ๋ฐ์) โ XOR ๊ฒฐ๊ณผ: 0
- XOR ์ฐ์ฐ์ ์ด์ง์ ๋ง์ ์์ "ํฉ(Sum)"๊ณผ ๋์ผํ ์ญํ : XOR์ ๋ ๋นํธ๊ฐ ๋ค๋ฅผ ๋ 1์ ์ถ๋ ฅํ๊ณ ๊ฐ์ ๋ 0์ ์ถ๋ ฅํ๋ค. ์ด๋ ์ด์ง ๋ง์ ์์ ์๋ฆฟ์ ํฉ์ ์ญํ ์ ์ ํํ ์ํํ๋ค.
- ์ฌ๋ฆผ (Carry)๊ณผ AND ์ฐ์ฐ ์ฌ๋ฆผ(Carry)์ ๋ ๊ฐ์ ๋นํธ๊ฐ ๋ชจ๋ 1์ผ ๋ ๋ฐ์ํ๋ค.
Carry=๐ดโ
๐ต=๐ดโง๐ต
// ์ฌ๋ฆผ ์ฐ์ฐ์ ๊ฒฝ์ฐ
0 0=0
0 1=0
1 0=0
1 1=1
// AND ์ฐ์ฐ์ ๊ฒฝ์ฐ
0 0=0
0 1=0
1 0=0
1 1=1
- ์ฌ๋ฆผ์ AND ์ฐ์ฐ๊ณผ ๋์ผ
- ์ํ์ ์ธ ์ผ๋ฐํ
(1) XOR์ ๋ ๋นํธ๊ฐ ๋ค๋ฅผ ๋ 1์ ๋ฐํํ๋ ์ฑ์ง์ด ์์ด์, ์ด์ง ๋ง์ ์ ํฉ(Sum Bit) ์ญํ ์ ํ๋ค. (2) AND๋ ๋ ๋นํธ๊ฐ ๋ชจ๋ 1์ผ ๋๋ง 1์ ๋ฐํํ๋ ์ฑ์ง์ด ์์ด์, ์ด์ง ๋ง์ ์ ์ฌ๋ฆผ(Carry Bit) ์ญํ ์ ํ๋ค.
| A | B | A + B (2์ง์) | ํฉ (Sum) | ์ฌ๋ฆผ (Carry) |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 1 | 1 | 0 |
| 1 | 1 | 10 | 0 | 1 |
์ด ๊ท์น์ **๋ฐ๊ฐ์ฐ๊ธฐ(Half Adder)**์ ๊ธฐ๋ณธ์ ์ธ ์๋ฆฌ์ด๊ธฐ๋ ํ๋ค.
c.f. ๋ฐ๊ฐ์ฐ๊ธฐ? : ์ด์ง์ ๋ง์ ์ ์ํํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ ผ๋ฆฌ ํ๋ก๋ก, ์ด์ง์์ ํ์๋ฆฌ์๋ฅผ ์ฐ์ฐํ๊ณ ์๋ฆฌ์ฌ๋ฆผ์๋ ์๋ฆฌ์ฌ๋ฆผ์ ์ถ๋ ฅ(carry)์ ๋ฐ๋ผ ์ถ๋ ฅํ๋ค. AND, OR, NOT์ ์ธ ๊ฐ์ง ์ข ๋ฅ์ ๋ ผ๋ฆฌํ๋ก๋ง์ผ๋ก ๊ตฌ์ฑํ ์ ์๋ค. ํ์ง๋ง ์ด์ ์๋ฆฌ์์ ๋ฐ์ํ ์ฌ๋ฆผ(Carry-In)์ ์ฒ๋ฆฌํ ์ ์๋ค๋ ํน์ง์ด ์์ด์ "๋ฐ(Half)" ๊ฐ์ฐ๊ธฐ๋ผ๊ณ ๋ถ๋ฆฐ๋ค.
=> ์ด๋ฌํ ์ฑ์ง์ ๊ธฐ๋ฐ์ผ๋ก, **๋ฐ๊ฐ์ฐ๊ธฐ(Half Adder)์ ์ ๊ฐ์ฐ๊ธฐ(Full Adder)**๊ฐ ์ค๊ณ๋๊ณ , ์ด๊ฒ์ด CPU์์ ๋ง์ ์ฐ์ฐ์ ์ํํ๋ ํต์ฌ ์๋ฆฌ๊ฐ ๋๋ค.
: CPU๋ ๊ธฐ๋ณธ ๋ ผ๋ฆฌ ๊ฒ์ดํธ(AND, OR, NOT)๋ฅผ ์กฐํฉํด์ XOR์ ๊ตฌํ
AโB=(AโจB)โงยฌ(AโงB)
-
ํ๋์จ์ด ์ต์ ํ: XOR ๊ฒ์ดํธ๋ฅผ ์ง์ ์ฌ์ฉํ๋ฉด ํ๋ก๊ฐ ์ปค์ง ์ ์์ โ ๊ธฐ๋ณธ ๊ฒ์ดํธ ์กฐํฉ์ด ๋ ํจ์จ์
** XOR์ ๊ธฐ๋ณธ ๊ฒ์ดํธ๋ณด๋ค ๋ณต์กํ ๋ ผ๋ฆฌ ์ฐ์ฐ์ด๋ผ์, ํ๋์จ์ด์ ์ผ๋ก ์ง์ ๋ง๋ค๋ฉด ์ถ๊ฐ์ ์ธ ํธ๋์ง์คํฐ๊ฐ ๋ ํ์ **
** ๋ ๋ ผ๋ฆฌ ๊ฒ์ดํธ๋ **ํธ๋์ง์คํฐ(Transistor)**๋ก ๊ตฌ์ฑ๋จ. ํธ๋์ง์คํฐ ๊ฐ์๊ฐ ๋ง์์ง๋ฉด ํ๋ก๊ฐ ์ปค์ง๊ณ , ์ ๋ ฅ ์๋น๊ฐ ์ฆ๊ฐํ๋ฉฐ, ์๋๋ ์ ํ **
-
๊ฒ์ดํธ ์ ์ต์ํ: CPU๋ AND, OR, NOT ๊ฒ์ดํธ๋ง์ผ๋ก XOR์ ๊ตฌ์ฑํ์ฌ ์นฉ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ ์๋๋ฅผ ๋์. (XOR์ ์ง์ ์ค๊ณํ๋ฉด ์ถ๊ฐ์ ์ธ ํ๋ก๊ฐ ํ์ํ๋ฏ๋ก ๊ธฐ์กด์ ๊ธฐ๋ณธ ๊ฒ์ดํธ๋ก XOR์ ๊ตฌํํ๋ ๊ฒ์ด ๊ฒฝ์ ์ )
-
์ ๊ฐ์ฐ๊ธฐ(Full Adder) ์ต์ ํ: XOR์ด ํฌํจ๋ ์ ๊ฐ์ฐ๊ธฐ ์ค๊ณ์์๋ ๊ธฐ๋ณธ ๋ ผ๋ฆฌ ๊ฒ์ดํธ๋ก XOR์ ๋ง๋ค๊ณ ์ฌ์ฉ.
: 1์ ๋ณด์๋ ์์๋ฅผ ํํํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ก, **๋ชจ๋ ๋นํธ๋ฅผ ๋ฐ์ (1 โ 0, 0 โ 1)**์์ผ ์์๋ฅผ ๋ํ๋.
+5 0101
-5 1010 (๋ฐ์ )
+7 0111
-7 1000 (๋ฐ์ )
: 1์ ๋ณด์ ๋ฐฉ์์์๋ ์บ๋ฆฌ ๋นํธ๊ฐ ๋ฐ์ํ๋ฉด ์ด๋ฅผ ๋ค์ ๋ํด์ผ ํ๋ "์บ๋ฆฌ ๋ณด์ (Carry Correction)" ๊ณผ์ ์ด ํ์
c.f. ์บ๋ฆฌ ๋ณด์ ์ด๋? : 1์ ๋ณด์(One's Complement) ์ฐ์ฐ์์ ๋ง์ ๊ฒฐ๊ณผ๊ฐ ์ฌ๋ฐ๋ฅด์ง ์์ ๋, ๋ฐ์ํ ์บ๋ฆฌ๋ฅผ ๋ค์ ๋ํด์ ์ฌ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋๋ ๊ณผ์
e.g. (-5 + 3)
1010 (-5, 1์ ๋ณด์)
+ 0011 (+3)
------------
1101 (-2์ 1์ ๋ณด์ ํํ)
e.g.3 (-3) + (-2)
1100 (-3, 1์ ๋ณด์)
+ 1101 (-2, 1์ ๋ณด์)
------------
10001 (5๋นํธ๊ฐ ๋จ โ ์ต์์ ์บ๋ฆฌ ๋ฐ์)
+ 0001 (์บ๋ฆฌ ๋ณด์ ์ถ๊ฐ)
------------
0010 (-5, 1์ ๋ณด์ ํํ)
=> ์ต์์ ๋นํธ(MSB)์์ ์บ๋ฆฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ, ๋ฐ์ํ ์บ๋ฆฌ๋ฅผ ๋ค์ ๊ฒฐ๊ณผ์ ๋ํด์ผ ํ๋ค.
e.g.2 (-5 + 5)
1010 (-5, 1์ ๋ณด์)
+ 0101 (+5)
------------
1111 (์ฌ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๋ 0์ด์ด์ผ ํ๋ ๊ฒฐ๊ณผ๊ฐ -0)
+ 0001 (์บ๋ฆฌ ๋ณด์ ์ถ๊ฐ)
------------
0000 (์ต์ข
์ ์ผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒฐ๊ณผ)
=> ๋ชจ๋ ๋นํธ๊ฐ 1(1111)์ด ๋๋ ๊ฒฝ์ฐ" ์บ๋ฆฌ ๋ณด์ ์ ๋ฐ๋์ ์ํ
- 1์ ๋ณด์์์๋ ๋ง์ ํ, ๊ฒฐ๊ณผ๊ฐ ์บ๋ฆฌ๋ฅผ ๋ฐ์์ํค๋ฉด ์ถ๊ฐ๋ก "1"์ ๋ค์ ๋ํด์ผ ํจ โก ์ด ์ถ๊ฐ์ ์ธ ๋ง์ ์ ์ํํ๋ ํ๋์จ์ด๊ฐ ํ์
- ์ฐ์ฐ ์๋ ์ ํ ์ ๋ฐ
- ํ๋์จ์ด๊ฐ ๋ณต์กํด์ง
=> 2์ ๋ณด์ ๋ฐฉ์์ด 1์ ๋ณด์๋ณด๋ค ์ ํธ๋๊ฒ ๋จ
- 2์ ๋ณด์(Twoโs Complement)๋?
2์ ๋ณด์๋ ์์๋ฅผ ํํํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ก, ์ปดํจํฐ์์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฐฉ์์ด๋ค.
2์ ๋ณด์๋ "๋นํธ ๋ฐ์ (1์ ๋ณด์) + 1์ ๋ํ๋ ๋ฐฉ์"์ผ๋ก ์์๋ฅผ ํํ
e.g.
// ์์(Positive Number)๋ ๋ถํธ ์๋ ์ด์ง์์ ๋์ผ
e.x +5 โ 0101 (4๋นํธ ๊ธฐ์ค)
// ์์(Negative Number)๋ ๋ค์ ๊ณผ์ ์ ๊ฑฐ์ณ ํํ
๋นํธ ๋ฐ์ (1์ ๋ณด์ ์ทจํ๊ธฐ)
0์ 1๋ก, 1์ 0์ผ๋ก ๋ณํ
1์ ๋ํ๊ธฐ (+1 ์ฐ์ฐ)
e.x. +5๋ฅผ 2์ ๋ณด์๋ก ๋ณํ
+5์ ์ด์ง์ (4๋นํธ ๊ธฐ์ค): 0101
1์ ๋ณด์ ์ทจํ๊ธฐ (๋นํธ ๋ฐ์ ): 1010
+1 ๋ํ๊ธฐ: 1011
- 2์ ๋ณด์๋ N๋นํธ์์ ํํ ๊ฐ๋ฅํ ์ซ์์ ๋ฒ์๊ฐ ์ ํด์ ธ ์์.
-2^(n-1) ~ 2^(n-1) - 1 - 4๋นํธ์์๋ ํํ ๊ฐ๋ฅํ ์ซ์ ๋ฒ์๊ฐ -8 ~ +7
=> 4๋นํธ 2์ ๋ณด์์์๋ "์์ 8"์ ๋ํ๋ผ ๋ฐฉ๋ฒ์ด ์๋ค. 2์ ๋ณด์๋ฒ์์ MSB๊ฐ ๋ถํธ ๋นํธ์ด๊ธฐ ๋๋ฌธ
//-8์ 2์ ๋ณด์ ํํ
8 -> 1000
๋ฐ์ -> 0111
+1 -> 1000 (๊ทธ๋๋ก!)
=> -8์ "2์ ๋ณด์ ๋ณํ์ ์ํํด๋ ๋ฐ๋์ง ์๋ ๊ณ ์ ์ (Fixed Point)"์ด๋ค.
4๋นํธ 2์ ๋ณด์ (๊ณ ์ ์ : -8): 0111
5๋นํธ 2์ ๋ณด์ (๊ณ ์ ์ : -16): 01111
6๋นํธ์ 2์ ๋ณด์ (๊ณ ์ ์ : -32): 011111
๊ณ ์ ์ ๊ท์น: N๋นํธ 2์ ๋ณด์์์ ํญ์ ์ต์๊ฐ โ2^(nโ1)์ด ๊ณ ์ ์ ์ด ๋๋ค.
: 2์ ๋ณด์๋ฅผ ์ทจํ๋ ๊ณผ์ ์ "๋นํธ ๋ฐ์ + 1"์ธ๋ฐ, ์ต์๊ฐ์ ํญ์ MSB๊ฐ 1์ด๊ณ ๋๋จธ์ง๊ฐ ๋ชจ๋ 0์ด๋ผ์, ๋ฐ์ ํ +1์ ๋ํด๋ ์๋ ๊ฐ์ด ๋์จ๋ค. ๊ฐ์ฅ ์์ ์์๋ "1 + ๋๋จธ์ง 0" ํํ์ด๊ธฐ ๋๋ฌธ!
10000000 (-128)
๋ฐ์ โ 01111111
+1 โ 10000000 (๋ค์ -128์ด ๋จ!)
1. ๋ ๋นํธ๋ฅผ ์๋ก ๋ํ ๊ฒฐ๊ณผ๋ ๋ ๋นํธ๋ฅผ XOR ํ ๊ฐ๊ณผ ๊ฐ๊ณ ์ฌ๋ฆผ์ ๋ ๋นํธ๋ฅผ AND ํ ์ฐ์ฐ๊ณผ ๊ฐ๋ค.
- ๋ ๋นํธ์ ํฉ
0+0=0 โ ํฉ๋นํธ ๊ฒฐ๊ณผ: 0
0+1=1 โ ํฉ๋นํธ ๊ฒฐ๊ณผ: 1
1+0=1 โ ํฉ๋นํธ ๊ฒฐ๊ณผ: 1
1+1=10 โ ํฉ๋นํธ ๊ฒฐ๊ณผ: 10
- XOR ์ฐ์ฐ (Exclusive OR, ๋ฐฐํ์ ๋ ผ๋ฆฌํฉ)
- XOR ์ฐ์ฐ์ด๋? : ๋ ๊ฐ์ ์ ๋ ฅ์ด ๋ค๋ฅผ ๋ 1์ ์ถ๋ ฅํ๊ณ , ๊ฐ์ผ๋ฉด 0์ ์ถ๋ ฅํ๋ ์ฐ์ฐ
0 0=0 โ XOR ๊ฒฐ๊ณผ: 0
0 1=1 โ XOR ๊ฒฐ๊ณผ: 1
1 0=1 โ XOR ๊ฒฐ๊ณผ: 1
1 1=10 (์ฆ, ํฉ ๋นํธ๋ 0์ด๊ณ ์ฌ๋ฆผ์ด ๋ฐ์) โ XOR ๊ฒฐ๊ณผ: 0
- XOR ์ฐ์ฐ์ ์ด์ง์ ๋ง์ ์์ "ํฉ(Sum)"๊ณผ ๋์ผํ ์ญํ : XOR์ ๋ ๋นํธ๊ฐ ๋ค๋ฅผ ๋ 1์ ์ถ๋ ฅํ๊ณ ๊ฐ์ ๋ 0์ ์ถ๋ ฅํ๋ค. ์ด๋ ์ด์ง ๋ง์ ์์ ์๋ฆฟ์ ํฉ์ ์ญํ ์ ์ ํํ ์ํํ๋ค.
- ์ฌ๋ฆผ (Carry)๊ณผ AND ์ฐ์ฐ ์ฌ๋ฆผ(Carry)์ ๋ ๊ฐ์ ๋นํธ๊ฐ ๋ชจ๋ 1์ผ ๋ ๋ฐ์ํ๋ค.
Carry=๐ดโ
๐ต=๐ดโง๐ต
// ์ฌ๋ฆผ ์ฐ์ฐ์ ๊ฒฝ์ฐ
0 0=0
0 1=0
1 0=0
1 1=1
// AND ์ฐ์ฐ์ ๊ฒฝ์ฐ
0 0=0
0 1=0
1 0=0
1 1=1
- ์ฌ๋ฆผ์ AND ์ฐ์ฐ๊ณผ ๋์ผ
- ์ํ์ ์ธ ์ผ๋ฐํ
(1) XOR์ ๋ ๋นํธ๊ฐ ๋ค๋ฅผ ๋ 1์ ๋ฐํํ๋ ์ฑ์ง์ด ์์ด์, ์ด์ง ๋ง์ ์ ํฉ(Sum Bit) ์ญํ ์ ํ๋ค. (2) AND๋ ๋ ๋นํธ๊ฐ ๋ชจ๋ 1์ผ ๋๋ง 1์ ๋ฐํํ๋ ์ฑ์ง์ด ์์ด์, ์ด์ง ๋ง์ ์ ์ฌ๋ฆผ(Carry Bit) ์ญํ ์ ํ๋ค.
| A | B | A + B (2์ง์) | ํฉ (Sum) | ์ฌ๋ฆผ (Carry) |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 1 | 1 | 0 |
| 1 | 1 | 10 | 0 | 1 |
์ด ๊ท์น์ **๋ฐ๊ฐ์ฐ๊ธฐ(Half Adder)**์ ๊ธฐ๋ณธ์ ์ธ ์๋ฆฌ์ด๊ธฐ๋ ํ๋ค.
c.f. ๋ฐ๊ฐ์ฐ๊ธฐ? : ์ด์ง์ ๋ง์ ์ ์ํํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ ผ๋ฆฌ ํ๋ก๋ก, ์ด์ง์์ ํ์๋ฆฌ์๋ฅผ ์ฐ์ฐํ๊ณ ์๋ฆฌ์ฌ๋ฆผ์๋ ์๋ฆฌ์ฌ๋ฆผ์ ์ถ๋ ฅ(carry)์ ๋ฐ๋ผ ์ถ๋ ฅํ๋ค. AND, OR, NOT์ ์ธ ๊ฐ์ง ์ข ๋ฅ์ ๋ ผ๋ฆฌํ๋ก๋ง์ผ๋ก ๊ตฌ์ฑํ ์ ์๋ค. ํ์ง๋ง ์ด์ ์๋ฆฌ์์ ๋ฐ์ํ ์ฌ๋ฆผ(Carry-In)์ ์ฒ๋ฆฌํ ์ ์๋ค๋ ํน์ง์ด ์์ด์ "๋ฐ(Half)" ๊ฐ์ฐ๊ธฐ๋ผ๊ณ ๋ถ๋ฆฐ๋ค.
=> ์ด๋ฌํ ์ฑ์ง์ ๊ธฐ๋ฐ์ผ๋ก, **๋ฐ๊ฐ์ฐ๊ธฐ(Half Adder)์ ์ ๊ฐ์ฐ๊ธฐ(Full Adder)**๊ฐ ์ค๊ณ๋๊ณ , ์ด๊ฒ์ด CPU์์ ๋ง์ ์ฐ์ฐ์ ์ํํ๋ ํต์ฌ ์๋ฆฌ๊ฐ ๋๋ค.
: CPU๋ ๊ธฐ๋ณธ ๋ ผ๋ฆฌ ๊ฒ์ดํธ(AND, OR, NOT)๋ฅผ ์กฐํฉํด์ XOR์ ๊ตฌํ
AโB=(AโจB)โงยฌ(AโงB)
-
ํ๋์จ์ด ์ต์ ํ: XOR ๊ฒ์ดํธ๋ฅผ ์ง์ ์ฌ์ฉํ๋ฉด ํ๋ก๊ฐ ์ปค์ง ์ ์์ โ ๊ธฐ๋ณธ ๊ฒ์ดํธ ์กฐํฉ์ด ๋ ํจ์จ์
** XOR์ ๊ธฐ๋ณธ ๊ฒ์ดํธ๋ณด๋ค ๋ณต์กํ ๋ ผ๋ฆฌ ์ฐ์ฐ์ด๋ผ์, ํ๋์จ์ด์ ์ผ๋ก ์ง์ ๋ง๋ค๋ฉด ์ถ๊ฐ์ ์ธ ํธ๋์ง์คํฐ๊ฐ ๋ ํ์ **
** ๋ ๋ ผ๋ฆฌ ๊ฒ์ดํธ๋ **ํธ๋์ง์คํฐ(Transistor)**๋ก ๊ตฌ์ฑ๋จ. ํธ๋์ง์คํฐ ๊ฐ์๊ฐ ๋ง์์ง๋ฉด ํ๋ก๊ฐ ์ปค์ง๊ณ , ์ ๋ ฅ ์๋น๊ฐ ์ฆ๊ฐํ๋ฉฐ, ์๋๋ ์ ํ **
-
๊ฒ์ดํธ ์ ์ต์ํ: CPU๋ AND, OR, NOT ๊ฒ์ดํธ๋ง์ผ๋ก XOR์ ๊ตฌ์ฑํ์ฌ ์นฉ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ ์๋๋ฅผ ๋์. (XOR์ ์ง์ ์ค๊ณํ๋ฉด ์ถ๊ฐ์ ์ธ ํ๋ก๊ฐ ํ์ํ๋ฏ๋ก ๊ธฐ์กด์ ๊ธฐ๋ณธ ๊ฒ์ดํธ๋ก XOR์ ๊ตฌํํ๋ ๊ฒ์ด ๊ฒฝ์ ์ )
-
์ ๊ฐ์ฐ๊ธฐ(Full Adder) ์ต์ ํ: XOR์ด ํฌํจ๋ ์ ๊ฐ์ฐ๊ธฐ ์ค๊ณ์์๋ ๊ธฐ๋ณธ ๋ ผ๋ฆฌ ๊ฒ์ดํธ๋ก XOR์ ๋ง๋ค๊ณ ์ฌ์ฉ.
: 1์ ๋ณด์๋ ์์๋ฅผ ํํํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ก, **๋ชจ๋ ๋นํธ๋ฅผ ๋ฐ์ (1 โ 0, 0 โ 1)**์์ผ ์์๋ฅผ ๋ํ๋.
+5 0101
-5 1010 (๋ฐ์ )
+7 0111
-7 1000 (๋ฐ์ )
: 1์ ๋ณด์ ๋ฐฉ์์์๋ ์บ๋ฆฌ ๋นํธ๊ฐ ๋ฐ์ํ๋ฉด ์ด๋ฅผ ๋ค์ ๋ํด์ผ ํ๋ "์บ๋ฆฌ ๋ณด์ (Carry Correction)" ๊ณผ์ ์ด ํ์
c.f. ์บ๋ฆฌ ๋ณด์ ์ด๋? : 1์ ๋ณด์(One's Complement) ์ฐ์ฐ์์ ๋ง์ ๊ฒฐ๊ณผ๊ฐ ์ฌ๋ฐ๋ฅด์ง ์์ ๋, ๋ฐ์ํ ์บ๋ฆฌ๋ฅผ ๋ค์ ๋ํด์ ์ฌ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋๋ ๊ณผ์
e.g. (-5 + 3)
1010 (-5, 1์ ๋ณด์)
+ 0011 (+3)
------------
1101 (-2์ 1์ ๋ณด์ ํํ)
e.g.3 (-3) + (-2)
1100 (-3, 1์ ๋ณด์)
+ 1101 (-2, 1์ ๋ณด์)
------------
10001 (5๋นํธ๊ฐ ๋จ โ ์ต์์ ์บ๋ฆฌ ๋ฐ์)
+ 0001 (์บ๋ฆฌ ๋ณด์ ์ถ๊ฐ)
------------
0010 (-5, 1์ ๋ณด์ ํํ)
=> ์ต์์ ๋นํธ(MSB)์์ ์บ๋ฆฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ, ๋ฐ์ํ ์บ๋ฆฌ๋ฅผ ๋ค์ ๊ฒฐ๊ณผ์ ๋ํด์ผ ํ๋ค.
e.g.2 (-5 + 5)
1010 (-5, 1์ ๋ณด์)
+ 0101 (+5)
------------
1111 (์ฌ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๋ 0์ด์ด์ผ ํ๋ ๊ฒฐ๊ณผ๊ฐ -0)
+ 0001 (์บ๋ฆฌ ๋ณด์ ์ถ๊ฐ)
------------
0000 (์ต์ข
์ ์ผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒฐ๊ณผ)
=> ๋ชจ๋ ๋นํธ๊ฐ 1(1111)์ด ๋๋ ๊ฒฝ์ฐ" ์บ๋ฆฌ ๋ณด์ ์ ๋ฐ๋์ ์ํ
- 1์ ๋ณด์์์๋ ๋ง์ ํ, ๊ฒฐ๊ณผ๊ฐ ์บ๋ฆฌ๋ฅผ ๋ฐ์์ํค๋ฉด ์ถ๊ฐ๋ก "1"์ ๋ค์ ๋ํด์ผ ํจ โก ์ด ์ถ๊ฐ์ ์ธ ๋ง์ ์ ์ํํ๋ ํ๋์จ์ด๊ฐ ํ์
- ์ฐ์ฐ ์๋ ์ ํ ์ ๋ฐ
- ํ๋์จ์ด๊ฐ ๋ณต์กํด์ง
=> 2์ ๋ณด์ ๋ฐฉ์์ด 1์ ๋ณด์๋ณด๋ค ์ ํธ๋๊ฒ ๋จ
- 2์ ๋ณด์(Twoโs Complement)๋?
2์ ๋ณด์๋ ์์๋ฅผ ํํํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ก, ์ปดํจํฐ์์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฐฉ์์ด๋ค.
2์ ๋ณด์๋ "๋นํธ ๋ฐ์ (1์ ๋ณด์) + 1์ ๋ํ๋ ๋ฐฉ์"์ผ๋ก ์์๋ฅผ ํํ
e.g.
// ์์(Positive Number)๋ ๋ถํธ ์๋ ์ด์ง์์ ๋์ผ
e.x +5 โ 0101 (4๋นํธ ๊ธฐ์ค)
// ์์(Negative Number)๋ ๋ค์ ๊ณผ์ ์ ๊ฑฐ์ณ ํํ
๋นํธ ๋ฐ์ (1์ ๋ณด์ ์ทจํ๊ธฐ)
0์ 1๋ก, 1์ 0์ผ๋ก ๋ณํ
1์ ๋ํ๊ธฐ (+1 ์ฐ์ฐ)
e.x. +5๋ฅผ 2์ ๋ณด์๋ก ๋ณํ
+5์ ์ด์ง์ (4๋นํธ ๊ธฐ์ค): 0101
1์ ๋ณด์ ์ทจํ๊ธฐ (๋นํธ ๋ฐ์ ): 1010
+1 ๋ํ๊ธฐ: 1011
- 2์ ๋ณด์๋ N๋นํธ์์ ํํ ๊ฐ๋ฅํ ์ซ์์ ๋ฒ์๊ฐ ์ ํด์ ธ ์์.
-2^(n-1) ~ 2^(n-1) - 1 - 4๋นํธ์์๋ ํํ ๊ฐ๋ฅํ ์ซ์ ๋ฒ์๊ฐ -8 ~ +7
=> 4๋นํธ 2์ ๋ณด์์์๋ "์์ 8"์ ๋ํ๋ผ ๋ฐฉ๋ฒ์ด ์๋ค. 2์ ๋ณด์๋ฒ์์ MSB๊ฐ ๋ถํธ ๋นํธ์ด๊ธฐ ๋๋ฌธ
//-8์ 2์ ๋ณด์ ํํ
8 -> 1000
๋ฐ์ -> 0111
+1 -> 1000 (๊ทธ๋๋ก!)
=> -8์ "2์ ๋ณด์ ๋ณํ์ ์ํํด๋ ๋ฐ๋์ง ์๋ ๊ณ ์ ์ (Fixed Point)"์ด๋ค.
4๋นํธ 2์ ๋ณด์ (๊ณ ์ ์ : -8): 0111
5๋นํธ 2์ ๋ณด์ (๊ณ ์ ์ : -16): 01111
6๋นํธ์ 2์ ๋ณด์ (๊ณ ์ ์ : -32): 011111
๊ณ ์ ์ ๊ท์น: N๋นํธ 2์ ๋ณด์์์ ํญ์ ์ต์๊ฐ โ2^(nโ1)์ด ๊ณ ์ ์ ์ด ๋๋ค.
: 2์ ๋ณด์๋ฅผ ์ทจํ๋ ๊ณผ์ ์ "๋นํธ ๋ฐ์ + 1"์ธ๋ฐ, ์ต์๊ฐ์ ํญ์ MSB๊ฐ 1์ด๊ณ ๋๋จธ์ง๊ฐ ๋ชจ๋ 0์ด๋ผ์, ๋ฐ์ ํ +1์ ๋ํด๋ ์๋ ๊ฐ์ด ๋์จ๋ค. ๊ฐ์ฅ ์์ ์์๋ "1 + ๋๋จธ์ง 0" ํํ์ด๊ธฐ ๋๋ฌธ!
10000000 (-128)
๋ฐ์ โ 01111111
+1 โ 10000000 (๋ค์ -128์ด ๋จ!)
