نحوه ذخیره اعداد اعشاری در کامپیوتر(تمرین)
اعداد اعشاری علاوه بر اینکه اعداد با اندازه های مختلف را دارند،ممکن است دارای تعداد ارقام اعشاری مختلف نیز باشند.در این جا به روش ممیز شناور اشاره می کنیم:
عدد ممیز شناور اعداد را به صورت علمی یعنی F*re درآورده و سپس E و F را نگه داری می کند که در آن مبنای در نظر گرفته شده برای عدد است.برای ذخیره سازی اعداد اعشاری در کامپیوتر، طبیعتا از r=2 استفاده می کنیم.برای این منظور ابتدا عدد را به نماد علمی در مبنای 2 تبدیل کرده و سپس فضای در نظر گرفته شده ، برای ذخیره سازی را به دو قسمت تقسیم کرده و در یک قسمت E و در قسمت دیگر F را ذخیره می کنیم.
دقت کنید که نمایش علمی یک عدد اعشاری منحصر به فرد نیست.مثلا عدد 55/66 (در سیستم دهدهی) را می توان به صورت های 101*5/566 و 102*0/5566 و 103*0/05566 نمایش داد.
معمولا از یک شکل نرمال شده برای ذخیره سازی استفاده می شود.
در شکل نرمال شده، پایه بین 0 و 1 در نظر گرفته می شود.این عدد در نمایش دودویی در محل در نظر گرفته شده ، برای پایه و توان که یک عدد صحیح مثبت یا منفی است در قسمت توان ذخیره می شود.
یک بیت نیز برای علامت عدد اعشاری در نظر گرفته شده است.به شکل زیر توجه کنید:
با توجه به شکل فوق مشخص است که برای اعداد اعشاری نیز مشابه اعداد صحیح ، دارای بازه اعداد قابل نگه داری هستیم که فضای در نظر گرفته شده برای توان این بازه را تعیین می کند. علاوه بر این، در تعداد ارقام اعشاری قابل ذخیره سازی یا دقت نیز محدودیت وجود دارد.نتیجه سریع این محدودیت این است که امکان نگه داری اعداد اعشاری که نمایش آنها دارای تعداد رقم اعشاری متناهی نیست، به صورت دقیق در کامپیوتر وجود ندارد و برای ذخیره سازی آنها بسته به فضای اختصاص داده شده به عدد، گرد کردن عدد انجام شده و سپس ذخیره می شود.
لذا انجام محاسبات دقیق در این خصوص ممکن نیست و این امر باید در کار با کامپیوتر مد نظر قرار گیرد.
روش ذخیرهسازی ممیز شناور برای اعداد اعشاری
مراحل این روش عبارت اند از:
۱) تبدیل عدد به کد دودویی
۲) تغییر ممیز شناور به صورت x.1
۳) افزودن آفست به توان
۴) افزودن صفر های اضافی به مقادیر به دست آمده و ذخیرهی عدد حاصل
برای مثال برای عدد 5.25 ،ذخیره سازی float را بررسی می کنیم:
۱) تبدیل به دودویی
| 5.25 = 101.01 |
۲) تغییر ممیز شناور
| 5.25 = 1.0101 * 2^2 |
۳) افزودن آفست به توان
| p = 2+127 = 129 = 10000001 |
۴) افزودن صفرهای اضافی
|
p = 10000001 c = 01010000000000000000000 5.25 = 0 10000001 01010000000000000000000 |