Skip to content

Latest commit

ย 

History

History
97 lines (86 loc) ยท 4.9 KB

File metadata and controls

97 lines (86 loc) ยท 4.9 KB

How to represent variety of numbers in a limited bits.

  • ๊ธฐ๋ณธ ์ ์œผ๋กœ ์•„๋ž˜ ๋ฐฉ๋ฒ•์€ 10์ง„์ˆ˜ <====> 2์ง„์ˆ˜๋กœ ๋ฐ”๊ฟ€ ๋•Œ์˜ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•œ๋‹ค.

Represent negative integer using "Signed Magnitude".

  • ๋ถ€ํ˜ธ๊ฐ€ ์žˆ๋Š” ํฌ๊ธฐ(Signed Magnitude) ๋ฐฉ์‹์€ MSB๊ฐ€ ๋ถ€ํ˜ธ๋ฅผ ๊ฒฐ์ •์ง“๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด 8๋น„ํŠธ๊ฐ€ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž์˜ ๊ฐ€์ง€์ˆ˜๋Š” 256๊ฐœ์ด๋‹ค.
  • ์ด ์ค‘ MSB(Most Significant Bit)๋ฅผ ๋ถ€ํ˜ธ๋กœ ์‚ฌ์šฉ ํ•œ๋‹ค๋ฉด?
    • 0 ์ด๋ฉด ์–‘์ˆ˜, / 1 ์ด๋ฉด ์Œ์ˆ˜
    • ์ด ๊ฒฝ์šฐ ์ˆซ์ž์˜ ํ‘œํ˜„ ๋ฒ”์œ„๋Š” -127 ~ 127 ๊นŒ์ง€ ์ด๋‹ค.
    • +0(0000 0000) ๊ณผ -0(1000 0000) ์ด ์ƒ๊ธด๋‹ค.
    • 1๊ฐœ์˜ ์—ฌ๋ถ„์ด ์ƒ๊ธด๋‹ค.

Represent negative integer using "1's complement".

  • 1์˜ ๋ณด์ˆ˜๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•.
  • Signed Magnitude๋ฐฉ๋ฒ•๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ, ํšŒ๋กœ์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฝ๋‹ค๊ณ  ํ•œ๋‹ค.
  • MSB ์˜ ๊ฐ’์ด..
    • 0 ์ผ ๊ฒฝ์šฐ => ์–‘์ˆ˜๋กœ ๊ณ„์‚ฐ.
    • 1 ์ผ ๊ฒฝ์šฐ => ๋ถ€ํ˜ธ๋ฅผ ํฌํ•จํ•˜์—ฌ 1์˜ ๋ณด์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ๊ตฌํ•œ๋‹ค.
    • 0010 1111 ์ธ ๊ฒฝ์šฐ ==> 2^5 + 2^3 + 2^2 + 2^1 + 2^0 = 47์œผ๋กœ ๊ณ„์‚ฐ.
    • 1011 0001 ์ธ ๊ฒฝ์šฐ ==> 0100 1110 (1์˜ ๋ณด์ˆ˜) ==> 2^6 + 2^3 + 2^2 + 2^1 = 78 ==> -78 (์ดˆ๊ธฐ์— MSB๊ฐ€ 1์ด์—ˆ๋ฏ€๋กœ ๋ถ€ํ˜ธ๋ฅผ ๋ถ™์ž„.)
    • ์ด ๊ฒฝ์šฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ +0, -0, ์ฒ˜๋Ÿผ ์—ฌ๋ถ„์ด ๋ฐœ์ƒํ•œ๋‹ค.

Represent negative integer using "2's complement".

  • 2์˜ ๋ณด์ˆ˜๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•.
  • MSB์˜ ๊ฐ’์ด...
    • 0 ์ผ ๊ฒฝ์šฐ => ์–‘์ˆ˜๋กœ ๊ณ„์‚ฐํ•œ๋‹ค.
    • 1 ์ผ ๊ฒฝ์šฐ => ํ•ด๋‹น ๋น„ํŠธ์˜ 1์˜ ๋ณด์ˆ˜๋ฅผ ๊ตฌํ•œ ํ›„, +1 ์„ ๋”ํ•œ๋‹ค.
    • 0010 1111 ์ธ ๊ฒฝ์šฐ ==> 2^5 + 2^3 + 2^2 + 2^1 + 2^0 = 47์œผ๋กœ ๊ณ„์‚ฐ.
    • 1011 0001 ์ธ ๊ฒฝ์šฐ ==> 0100 1110 (1์˜ ๋ณด์ˆ˜) ==> 0100 1111 ==> 2^6 + 2^3 + 2^2 + 2^1 + 2^0 = 79 ==> -79 (์ดˆ๊ธฐ์— MSB๊ฐ€ 1์ด์—ˆ๋ฏ€๋กœ ๋ถ€ํ˜ธ๋ฅผ ๋ถ™์ž„.)
    • ์ด ๊ฒฝ์šฐ ์—ฌ๋ถ„์ด ์ƒ๊ธฐ์ง€ ์•Š๋Š”๋‹ค. ๋ชจ๋“  ๊ฐ’์— ๋Œ€ํ•ด์„œ ํ‘œํ˜„์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์†Œ์ˆ˜์  ํ‘œํ˜„ ๋ฐฉ์‹์—๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€ ์žˆ๋‹ค. ๊ณ ์ • ์†Œ์ˆ˜์  ๋ฐฉ์‹ / ๋ถ€๋™ ์†Œ์ˆ˜์  ๋ฐฉ์‹.

์ด ๋ฌธ์„œ์—์„œ๋Š” ๋ถ€๋™์†Œ์ˆ˜์  ๋ฐฉ์‹์„ ์ค‘์ ์ ์œผ๋กœ ๋‹ค๋ฃฌ๋‹ค.

๋ถ€๋™ ์†Œ์ˆ˜์  ๋ฐฉ์‹์„ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ์‹์ค‘์—์„œ IEEE 754๋ฐฉ์‹์„ ๋‹ค๋ฃฌ๋‹ค.*

ํƒ€์ž…์— ๋”ฐ๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ๋ฐฐ์ •๋ฐฉ์‹์„ ์‚ดํŽด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Type Sign bit exponent bit mantissa bits precision
float 1 8 23 6 ~ 7
double 1 11 52 15 ~ 16

How to represent float number.

  • ๋น„ํŠธ๋กœ ํ‘œํ˜„ํ•ด์•ผ ํ•  ์†Œ์ˆ˜๊ฐ€ 3.625๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž.
    1. ๋จผ์ € ์ด ์ˆ˜๋ฅผ ์ด์ง„์ˆ˜๋กœ ํ‘œํ˜„ํ•œ๋‹ค. (11.101)
    • ์ •์ˆ˜๋ถ€๋Š” 11
    • ์†Œ์ˆ˜๋ถ€๋Š” 0.101 ์ด ๋œ๋‹ค.
      • 0.625 * 2 = 1.25 ---- 1 ย ย  |
      • 0.25 * 2 = 0.5 ------ 0 ย ย  |
      • 0.5 * 2 = 1.0 -------- 1 ย  โˆจ
    • ์‹ค์ˆ˜ 3.625๋Š” 11.101๋กœ ํ‘œํ˜„๋œ๋‹ค.
    1. ์ง€์ˆ˜ํ˜•ํƒœ๋กœ ์œ„์˜ ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.
    • 1.1101 * (2^1)
    1. ๋ถ€ํ˜ธ ๋น„ํŠธ ์ •ํ•˜๊ธฐ
    • ๋จผ์ € ๋ถ€ํ˜ธ๋ฅผ ๊ฒฐ์ •ํ•˜์ž๋ฉด, ์–‘์˜ ์‹ค์ˆ˜์ด๋‹ˆ, 0 ์ด๋‹ค.
    1. ์ง€์ˆ˜๋ถ€ ๋น„ํŠธ ์ •ํ•˜๊ธฐ
    • ๋‹ค์Œ ์ง€์ˆ˜๋ถ€์˜ ๋น„ํŠธ๋ฅผ ์ •ํ•ด๋ณด๋ฉด float์˜ ๊ฒฝ์šฐ bias๊ฐ’ 127์„ ๋”ํ•œ๋‹ค. (์ด ๊ฐ’์„ excess-127์ด๋ผ ํ•œ๋‹ค.)
    • ๊ทธ ๊ฒฐ๊ณผ 127 + 1 = 128 ==> 1000 0000 ์ด ๋œ๋‹ค.
    1. ๊ฐ€์ˆ˜๋ถ€ ๋น„ํŠธ ์ •ํ•˜๊ธฐ
    • 1.1101 ์—์„œ 1์„ ๋บ€ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„ 0.1101 ์— ๋‚˜๋จธ์ง€ ๋น„ํŠธ๋Š” 0์œผ๋กœ ์ฑ„์šด๋‹ค.
    • ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋œ๋‹ค.
    • 110 1000 0000 0000 0000 0000
    1. ํ•ฉ์น˜๊ธฐ.
    • ๋ถ€ํ˜ธ์™€ ์ง€์ˆ˜๋ถ€, ๊ฐ€์ˆ˜๋ถ€๋ฅผ ์ „๋ถ€ ๊ตฌํ•˜์˜€์œผ๋‹ˆ ์†Œ์ˆ˜ 3.625๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋œ๋‹ค.
    • 0100 0000 0110 1000 0000 0000 0000 0000
    1. 16์ง„์ˆ˜๋กœ ํ‘œํ˜„ํ•ด๋ณด๊ธฐ.
    • 0x40670000

How to represent double number.

  • ๋น„ํŠธ๋กœ ํ‘œํ˜„ํ•ด์•ผ ํ•  ์†Œ์ˆ˜๊ฐ€ 3.625๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž.
    1. ๋จผ์ € ์ด ์ˆ˜๋ฅผ ์ด์ง„์ˆ˜๋กœ ํ‘œํ˜„ํ•œ๋‹ค. (11.101)
    • ์ •์ˆ˜๋ถ€๋Š” 11
    • ์†Œ์ˆ˜๋ถ€๋Š” 0.101 ์ด ๋œ๋‹ค.
      • 0.625 * 2 = 1.25 ---- 1 ย ย  |
      • 0.25 * 2 = 0.5 ------ 0 ย ย  |
      • 0.5 * 2 = 1.0 -------- 1 ย  โˆจ
    • ์‹ค์ˆ˜ 3.625๋Š” 11.101๋กœ ํ‘œํ˜„๋œ๋‹ค.
    1. ์ง€์ˆ˜ํ˜•ํƒœ๋กœ ์œ„์˜ ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.
    • 1.1101 * (2^(-1))
    1. ๋ถ€ํ˜ธ ๋น„ํŠธ ์ •ํ•˜๊ธฐ
    • ๋จผ์ € ๋ถ€ํ˜ธ๋ฅผ ๊ฒฐ์ •ํ•˜์ž๋ฉด, ์–‘์˜ ์‹ค์ˆ˜์ด๋‹ˆ, 0 ์ด๋‹ค.
    1. ์ง€์ˆ˜๋ถ€ ๋น„ํŠธ ์ •ํ•˜๊ธฐ
    • ๋‹ค์Œ ์ง€์ˆ˜๋ถ€์˜ ๋น„ํŠธ๋ฅผ ์ •ํ•ด๋ณด๋ฉด float์˜ ๊ฒฝ์šฐ bias๊ฐ’ 1023์„ ๋”ํ•œ๋‹ค. (์ด ๊ฐ’์„ excess-1023์ด๋ผ ํ•œ๋‹ค.)
    • ๊ทธ ๊ฒฐ๊ณผ 1023 + 1 = 1024 ==> 100 0000 0000 ์ด ๋œ๋‹ค.
    1. ๊ฐ€์ˆ˜๋ถ€ ๋น„ํŠธ ์ •ํ•˜๊ธฐ
    • 1.1101 ์—์„œ 1์„ ๋บ€ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„ 0.1101 ์— ๋‚˜๋จธ์ง€ ๋น„ํŠธ๋Š” 0์œผ๋กœ ์ฑ„์šด๋‹ค.
    • ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋œ๋‹ค.
    • 1101 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
    1. ํ•ฉ์น˜๊ธฐ.
    • ๋ถ€ํ˜ธ์™€ ์ง€์ˆ˜๋ถ€, ๊ฐ€์ˆ˜๋ถ€๋ฅผ ์ „๋ถ€ ๊ตฌํ•˜์˜€์œผ๋‹ˆ ์†Œ์ˆ˜ 3.625๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋œ๋‹ค.
    • 0100 0000 0000 1101 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
    1. 16์ง„์ˆ˜๋กœ ๋‚˜ํƒ€๋‚ด๋ณด๊ธฐ.
    • 0x400D000000000000