تبیان، دستیار زندگی
همان طور که گفتیم مقادیر غیر صحیح با استفاده از اعداد ممیز شناور نمایش داده می شوند. اعداد ممیز شناور همانند نماد علمی هستند و اعداد را به صورت یک مانتیس و یک نما نمایش می دهند...
عکس نویسنده
عکس نویسنده
بازدید :
زمان تقریبی مطالعه :

اعدادی که عدد نیستند


همان طور که گفتیم مقادیر غیر صحیح با استفاده از اعداد ممیز شناور نمایش داده می شوند. اعداد ممیز شناور همانند نماد علمی هستند و اعداد را به صورت یک مانتیس و یک نما نمایش می دهند. این امر اجازه می دهد تا محدوده بسیار وسیعی از مقادیر با تعداد اندکی بیت به نمایش درآید؛ هر چند که همه مقادیر دقیقا نمی توانند در این محدوده قرار گیرند. ضرب و تقسیم به سادگی در اعداد ممیز شناور پیاده سازی می شوند در حالی که جمع و تفریق بسیار پیچیده ترند.

استاندارد ممیز شناور IEEE بیان گر چند الگوی بیتی است که مقادیری را به نمایش می گذارند که دقیقا امکان نمایش دقیقی در قالب ممیز شناور پایه را ندارند: صفر، اعداد غیر نرمال و NaNها ( Not – a – Number ).

اعدادی که عدد نیستند

یک فرضی در مانتیس اعداد ممیز شناور امکان یک بین دقت اضافی را در نمایش پدید می آورد، اما چون فیلد کسری صفر بیان گر مانتیش 1.0 است، از نمایش دقیق مقدار صفر ممانعت به عمل می آورد. از آن جا که نمایش دقیق صفر برای محاسبات عددی بسیار اهمیت دارد، استاندارد IEEE به این امر توجه داشته است که وقتی فیلد نمای عدد ممیز شناوری صفر باشد، بیت مقدم مانتیس برابر صفر فرض گردد. بدین ترتیب، هر عدد ممیز شناور با فیلد کسری 0 و فیلد نمای 0 ، دقیقا صفر را نمایش می دهد. این قرارداد همچنین اجازه می دهد تا اعدادی که در قیاس با 1.0 * 2 ^(1-bias) به 0 نزدیک ترند، قابل نمایش گردند؛ با این همه، آن ها دارای بیت های دقت کمتریدر مقایسه با اعدادی هستند که می توانند با 1 فرضی پیش از فیلد کسری نمایش داده شوند.

اعداد ممیز شناور ( به استثنای 0) که دارای فیلد نمای 0 هستند، به دلیل 0 فرضی در بخش صحیح مانتیس شان، به عنوان اعداد غیرنرمال شناخته می شوند. این ها بر خلاف اعدادی هستند که مقادیر دیگری در فیلد نما دارند و دارای یک 1 فرضی در بخش صحیح مانتیس خود می باشند که تحت عنوان اعداد نرمال شناخته شده اند. فرض می شود که همه اعداد غیر نرمال دارای فیلد نمای ( 1-bias) به جای (0-bias) باشند که این امر تنها با تفریق بایاس از مقدار نمای شان ایجاد خواهد شد. این موضوع فاصله ی کوچک تری را بین عدد نرمال با کوچک ترین مقدار و عدد غیرنرمال با بزرگ ترین مقداری که می توانند توسط هر قالب نمایش داده شوند، پدید می آورد.

اعدادی که عدد نیستند

نوع دیگری از مقادیر خاص در استاندارد ممیز شناور، NaNها هستند. NaNها برای اعلان شرایط خظا مانند سرریزها، پاریزها، تقسیم بر صفر و امثالهم استفاده می شوند. وقتی یکی از این خطاها در عملی رخ دهد، سخت افزار به جای علامت دهی استثنا، یک NaN را به عنوان نتیجه ی آن تولید می کند. عملیات بعدی که یک NaN را به عنوان یکی از ورودی هایشان دریافت می کنند، آن NaN را در خروجی های خود به جای انجام محاسبات عادی خویش کپی می کنند. NaNها با فیلد نمای تماما 1 در هر عدد ممیز شناور نمایش داده می شوند؛ مگر این که فیلد کسری عدد 0 باشد که در این صورت عدد مزبور بیانگر بی نهایت خواهد بود. وجود NaNها، نوشتن برنامه هایی را که بر روی چندین کامپیوتر مختلف اجرا می شوند، آسان تر کرده است؛ زیرا برنامه نویسان می توانند به جای اتکا بر توابع مدیریت استثنای سیستم، که به میزان قابل توجهی در کامپیوترهای مختلف متفاوت است، نتایج هر محاسبه را برای خطاهای درون برنامه وارسی کنند.

با استفاده از ترکیب اعداد صحیح و ممیز شناور، برنامه ها می توانند طیف وسیعی از عملیات حسابی را اجرا کنند. با این حال، همگی این نمایش ها محدودیت های خودشان را دارند. محدوده اعداد صحیحی که هر کامپیوتر می تواند نمایش دهد با پهنای بیت خودش محدود می شود و در صورتی که مبادرت به انجام محاسباتی کند که نتایجی بیرون از این محدوده به بار آورد، نتایج نادرست تولید می شوند. اعداد ممیز شناور نیز گستره محدودی دارند، با این وجود، نمایش مانتیس-نما، چنین گستره ای را بسیار بزرگتر می سازد. به دلیل استفاده از تعداد محدودی بیت برای نمایش مانتیس هر عدد، محدودیت بسیار مشخص اعداد ممیز شناور از این حقیقت ناشی می شود که آن ها فقط قادر به نمایش اعداد با تعداد محدودی ارقام با معنی هستند. محاسباتی که نیازمند دقت بیشتری در قیاس با نمایش ممیز شناور هستند، اجازه عمل به طرز صحیحی را نمی دهند.

فاطمه مجدآبادی

بخش دانش و زندگی تبیان


برگرفته از:

Computer Architecture

Nicholas Carter

H.daneshvar