کامپیوترها چگونه اعداد اعشاری را نمایش می‌دهند: استاندارد ممیز شناور

اعداد صحیح نمی‌توانند مقادیر اعشاری یا بازه عظیم بزرگی‌هایی که محاسبات علمی و مالی نیاز دارند را نمایش دهند. این مقاله توضیح می‌دهد اعداد ممیز شناور چگونه یک علامت، توان و کسر را در تعداد ثابتی بیت مطابق با استاندارد IEEE 754 کدگذاری می‌کنند، و مبادلات دقت و مسائل گرد کردن که با این روش نمایش اعداد حقیقی همراه است را پوشش می‌دهد.

دقت و گرد کردنممیز شناوراستاندارد IEEE 754

~3 min read · Updated Sep 6, 2026

چرا اعداد صحیح کافی نیستند

تمام محاسباتی که پیش‌تر در این مجموعه پوشش داده شد، اعداد صحیح ذخیره‌شده به‌عنوان اعداد باینری با عرض ثابت را فرض می‌کردند. با این حال، بسیاری از محاسبات دنیای واقعی به مقادیر اعشاری و اعدادی که بازه عظیمی از بزرگی‌ها را پوشش می‌دهند نیاز دارند — از جرم یک الکترون تا فاصله بین کهکشان‌ها — که یک نمایش عدد صحیح ساده نمی‌تواند به‌طور کارآمد آن‌ها را مدیریت کند.

ایده اصلی: نماد علمی در باینری

نمایش Floating Point ایده پشت نماد علمی اعشاری را وام می‌گیرد، جایی که یک عدد به‌صورت مقداری ضرب‌شده در توانی از یک مبنا بیان می‌شود. در ممیز شناور باینری، یک عدد به سه مؤلفه شکسته می‌شود که در یک کلمه با عرض ثابت بسته‌بندی شده‌اند:

  • Sign: یک بیت تکی که نشان می‌دهد عدد مثبت است یا منفی.
  • Exponent: بزرگی کلی را تعیین می‌کند، در واقع اینکه ممیز باینری چقدر جابه‌جا شده است.
  • Fraction (که Mantissa نیز نامیده می‌شود): ارقام معنادار عدد را نگه می‌دارد.

از نظر مفهومی، یک مقدار ممیز شناور این‌طور تفسیر می‌شود:

Value = (−1)^Sign × (1.Fraction) × 2^(Exponent − Bias)

استاندارد IEEE 754

تقریباً تمام سخت‌افزار امروزی، از جمله RISC-V، از استاندارد IEEE 754 برای نمایش ممیز شناور پیروی می‌کند، که عرض بیتی و رفتار این فیلدها را دقیقاً تعریف می‌کند تا نتایج ممیز شناور در پردازنده‌ها و سازندگان مختلف سازگار باشند.

  • Single Precision در مجموع از ۳۲ بیت استفاده می‌کند: ۱ بیت علامت، ۸ بیت توان، و ۲۳ بیت کسر.
  • Double Precision در مجموع از ۶۴ بیت استفاده می‌کند: ۱ بیت علامت، ۱۱ بیت توان، و ۵۲ بیت کسر، که بازه بسیار گسترده‌تر و دقت بیشتری به قیمت دو برابر شدن فضای ذخیره‌سازی فراهم می‌کند.

استاندارد همچنین از یک مقدار Bias استفاده می‌کند که از فیلد توان ذخیره‌شده کم می‌شود، که اجازه می‌دهد هم بزرگی‌های بسیار بزرگ و هم بسیار کوچک بدون نیاز به یک بیت علامت جداگانه برای خود توان نمایش داده شوند.

محدودیت‌های دقت و گرد کردن

از آنجا که فقط تعداد ثابتی بیت کسر موجود است، بیشتر اعداد حقیقی نمی‌توانند دقیقاً نمایش داده شوند و باید به نزدیک‌ترین مقدار قابل‌نمایش گرد شوند. این یک پیامد عملی مستقیم دارد: محاسبات ممیز شناور همیشه مانند ریاضیات دقیق رفتار نمی‌کنند.

مثالی از یک اثر گرد کردن رایج:
0.1 + 0.2 همیشه دقیقاً برابر با 0.3 نیست
در نمایش ممیز شناور، به‌دلیل گرد کردن
در طول کدگذاری باینری.

این یک نقص سخت‌افزاری نیست بلکه پیامدی ذاتی از نمایش یک بازه بی‌نهایت از اعداد حقیقی با استفاده از تعداد محدودی بیت است.

مقادیر خاص تعریف‌شده توسط استاندارد

IEEE 754 الگوهای بیتی مشخصی را برای مقادیری که با اعداد معمولی مطابقت ندارند رزرو می‌کند، از جمله Positive and Negative Infinity، که برای نمایش سرریز استفاده می‌شود، و NaN (Not a Number)، که برای نمایش نتیجه عملیات‌های نامشخص مانند صفر تقسیم بر صفر استفاده می‌شود.

چرا درک این موضوع اهمیت دارد

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

Written & researched by Dr. Shahin Siami

Related Articles

تصورات غلط رایج درباره محاسبات موازی و درس‌های نهایی کتاب

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

Continue

واقعیت‌های عملی: بنچمارک CPU در مقابل GPU و ضرب ماتریس چندپردازنده‌ای

مقایسه منصفانه یک CPU و یک GPU نیازمند مدلی است که هم توان عملیاتی محاسباتی و هم محدودیت‌های پهنای باند حافظه را با هم در نظر بگیرد. این مقاله مدل roofline مورد استفاده برای مقایسه سخت‌افزار واقعی مانند Intel Core i7 و NVIDIA Tesla GPU را معرفی می‌کند، سپس نشان می‌دهد ضرب ماتریس چگونه در سراسر چند پردازنده تسریع می‌شود، به‌عنوان کاربرد عملی نهایی مفاهیم موازی این فصل.

Continue

بنچمارک کردن چندپردازنده‌ها و مدل‌سازی کارایی موازی

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

Continue

شبکه‌سازی کلاستر: ارتباط با دنیای بیرون

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

Continue

کلاسترها، کامپیوترهای در مقیاس انبار، و توپولوژی‌های شبکه

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

Continue

مقدمه‌ای بر GPU: موازی‌سازی عظیم برای بارهای کاری سنگین از نظر داده

یک GPU ایده SIMD که پیش‌تر در این مجموعه پوشش داده شد را به یک مقیاس افراطی می‌برد، و هزاران رشته سبک را به‌طور هم‌زمان اجرا می‌کند تا حجم عظیمی از داده مستقل را پردازش کند. این مقاله توضیح می‌دهد چرا GPU ها از نظر معماری این‌قدر با CPU متفاوت‌اند، مدل اجرای رشته آن‌ها چگونه کار می‌کند، و چه نوع بارهای کاری بیشترین بهره را از این طراحی می‌برند.

Continue