Skip to content

Latest commit

ย 

History

History
472 lines (330 loc) ยท 15 KB

File metadata and controls

472 lines (330 loc) ยท 15 KB

1. ๋‘ ๋น„ํŠธ๋ฅผ ์„œ๋กœ ๋”ํ•œ ๊ฒฐ๊ณผ๋Š” ๋‘ ๋น„ํŠธ๋ฅผ XOR ํ•œ ๊ฐ’๊ณผ ๊ฐ™๊ณ  ์˜ฌ๋ฆผ์€ ๋‘ ๋น„ํŠธ๋ฅผ AND ํ•œ ์—ฐ์‚ฐ๊ณผ ๊ฐ™๋‹ค.

1) why?

  1. ๋‘ ๋น„ํŠธ์˜ ํ•ฉ
0+0=0 โ†’ ํ•ฉ๋น„ํŠธ ๊ฒฐ๊ณผ: 0
0+1=1 โ†’ ํ•ฉ๋น„ํŠธ ๊ฒฐ๊ณผ: 1
1+0=1 โ†’ ํ•ฉ๋น„ํŠธ ๊ฒฐ๊ณผ: 1
1+1=10 โ†’ ํ•ฉ๋น„ํŠธ ๊ฒฐ๊ณผ: 10
  1. 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์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ด๋Š” ์ด์ง„ ๋ง์…ˆ์—์„œ ์ž๋ฆฟ์ˆ˜ ํ•ฉ์˜ ์—ญํ• ์„ ์ •ํ™•ํžˆ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  1. ์˜ฌ๋ฆผ (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. ์ˆ˜ํ•™์ ์ธ ์ผ๋ฐ˜ํ™”

(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์—์„œ ๋ง์…ˆ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•ต์‹ฌ ์›๋ฆฌ๊ฐ€ ๋œ๋‹ค.

2) CPU์—์„œ XOR์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹

: 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์„ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉ.

2. ์™œ 1์˜ ๋ณด์ˆ˜ ๊ณ„์‚ฐ๋ฒ•์—์„œ๋Š” ์ถ”๊ฐ€์ ์ธ ํ•˜๋“œ์›จ์–ด๊ฐ€ ๋“ค๊นŒ?

1) 1์˜ ๋ณด์ˆ˜(Oneโ€™s Complement)๋ž€?

: 1์˜ ๋ณด์ˆ˜๋Š” ์Œ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ, **๋ชจ๋“  ๋น„ํŠธ๋ฅผ ๋ฐ˜์ „(1 โ†’ 0, 0 โ†’ 1)**์‹œ์ผœ ์Œ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ„.

+5	0101
-5	1010 (๋ฐ˜์ „)
+7	0111
-7	1000 (๋ฐ˜์ „)

2) 1์˜ ๋ณด์ˆ˜ ๋ง์…ˆ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์บ๋ฆฌ ๋ณด์ • ๋ฌธ์ œ

: 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์˜ ๋ณด์ˆ˜๋ณด๋‹ค ์„ ํ˜ธ๋˜๊ฒŒ ๋จ

3. 2์˜ ๋ณด์ˆ˜์—์„œ -8์€ ์œ ์ผํ•˜๊ฒŒ ์ž๊ธฐ ์ž์‹ ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค

why?

  • 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๊ฐ€ ๋ถ€ํ˜ธ ๋น„ํŠธ์ด๊ธฐ ๋•Œ๋ฌธ 2์˜๋ณด์ˆ˜

2์˜ ๋ณด์ˆ˜์—์„œ -8์ด ์ž๊ธฐ ์ž์‹ ์„ ์œ ์ง€ํ•˜๋Š” ์ด์œ 

 //-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 ํ•œ ์—ฐ์‚ฐ๊ณผ ๊ฐ™๋‹ค.

1) why?

  1. ๋‘ ๋น„ํŠธ์˜ ํ•ฉ
0+0=0 โ†’ ํ•ฉ๋น„ํŠธ ๊ฒฐ๊ณผ: 0
0+1=1 โ†’ ํ•ฉ๋น„ํŠธ ๊ฒฐ๊ณผ: 1
1+0=1 โ†’ ํ•ฉ๋น„ํŠธ ๊ฒฐ๊ณผ: 1
1+1=10 โ†’ ํ•ฉ๋น„ํŠธ ๊ฒฐ๊ณผ: 10
  1. 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์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ด๋Š” ์ด์ง„ ๋ง์…ˆ์—์„œ ์ž๋ฆฟ์ˆ˜ ํ•ฉ์˜ ์—ญํ• ์„ ์ •ํ™•ํžˆ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  1. ์˜ฌ๋ฆผ (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. ์ˆ˜ํ•™์ ์ธ ์ผ๋ฐ˜ํ™”

(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์—์„œ ๋ง์…ˆ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•ต์‹ฌ ์›๋ฆฌ๊ฐ€ ๋œ๋‹ค.

2) CPU์—์„œ XOR์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹

: 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์„ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉ.

2. ์™œ 1์˜ ๋ณด์ˆ˜ ๊ณ„์‚ฐ๋ฒ•์—์„œ๋Š” ์ถ”๊ฐ€์ ์ธ ํ•˜๋“œ์›จ์–ด๊ฐ€ ๋“ค๊นŒ?

1) 1์˜ ๋ณด์ˆ˜(Oneโ€™s Complement)๋ž€?

: 1์˜ ๋ณด์ˆ˜๋Š” ์Œ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ, **๋ชจ๋“  ๋น„ํŠธ๋ฅผ ๋ฐ˜์ „(1 โ†’ 0, 0 โ†’ 1)**์‹œ์ผœ ์Œ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ„.

+5	0101
-5	1010 (๋ฐ˜์ „)
+7	0111
-7	1000 (๋ฐ˜์ „)

2) 1์˜ ๋ณด์ˆ˜ ๋ง์…ˆ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์บ๋ฆฌ ๋ณด์ • ๋ฌธ์ œ

: 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์˜ ๋ณด์ˆ˜๋ณด๋‹ค ์„ ํ˜ธ๋˜๊ฒŒ ๋จ

3. 2์˜ ๋ณด์ˆ˜์—์„œ -8์€ ์œ ์ผํ•˜๊ฒŒ ์ž๊ธฐ ์ž์‹ ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค

why?

  • 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๊ฐ€ ๋ถ€ํ˜ธ ๋น„ํŠธ์ด๊ธฐ ๋•Œ๋ฌธ 2์˜๋ณด์ˆ˜

2์˜ ๋ณด์ˆ˜์—์„œ -8์ด ์ž๊ธฐ ์ž์‹ ์„ ์œ ์ง€ํ•˜๋Š” ์ด์œ 

 //-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์ด ๋จ!)