נקודה צפה

שיטת ייצוג למספרים ממשיים במחשב

נקודה צפהאנגלית: Floating-point) היא שיטה לייצוג מספרים ממשיים, המאזנת, תוך התחשבות במקום המוגבל המוקצב לרישום המספר, בין הצורך לרשום טווח רחב של מספרים לצורך לרשום מספרים בדיוק רב. השיטה יעילה גם לרישום מספרים גדולים מאוד או קטנים מאוד.

השם "נקודה צפה" מציין את העובדה שבשיטת ייצוג זו, מספר הספרות משמאל לנקודה העשרונית ומימין לה גמיש, בהתאם למספר המיוצג (להבדיל מייצוג בשיטת נקודה קבועה, שבו מספר הספרות בכל אחד מצידי הנקודה העשרונית קבוע).

שיטת הנקודה הצפה היא שיטה מקובלת לייצוג מספרים במחשב, והיא מאפשרת לרשום בזיכרון בגודל נתון (למשל 64 ביטים) מספרים הרבה יותר גדולים מאשר שניתן לרשום בגודל זיכרון זה בנקודה קבועה, וזאת במחיר ויתור על רמת הדיוק של המספר (ויתור שאינו קריטי כאשר מדובר במספרים גדולים מאוד - הוויתור הוא על הספרות הפחות משמעותיות של המספר).

דוגמה: מהירות האור היא 299,792,458 מטר לשנייה. ניתן לרשום ערך זה גם בקירוב כ-‎2.99×108. בצורת הרישום הראשונה נזקקנו ל-9 ספרות, ואילו בצורת הרישום השנייה נזקקנו רק ל-4 ספרות (ניתן להתעלם מהמספר 10, כי ידוע שאנו בשיטה העשרונית), כלומר חסכנו זיכרון במחיר של הקטנת הדיוק.

ייצוג בנקודה צפה

עריכה

מספר רציונלי מיוצג בשיטת הנקודה הצפה על ידי מכפלת מספר שלם או שבר, הנקרא מנטיסה בבסיס בחזקת מעריך.

המספר a מיוצג כ-   כאשר:

  • m היא המנטיסה. המנטיסה מיוצגת בדרך כלל באמצעות שבר בשיטת נקודה קבועה, אך היא יכולה להיות גם שלם, המנטיסה נמצאת בדרך כלל בין 1 ל-b.
  • b הוא הבסיס. הבסיס הוא מספר שלם קבוע, ואינו חלק מהייצוג המסוים של a, אלא חלק מאופן הייצוג. מקובל להשתמש בבסיס 2 עבור מחשבים ובבסיס 10 עבור הצגה אנושית טבעית.
  • e הוא המעריך (אקספוננט). המעריך מיוצג באמצעות מספר שלם.

לפי תקן ה-IEEE קיימים ערכים מיוחדים כגון אינסוף ו-NaN (לא מספר - Not a Number). לא בכל המחשבים מיוצגים ערכים אלו באותה צורה בינארית. לרוב, גם האפס מיוצג כערך מיוחד, מכיוון שהוא המספר היחיד בעל אקספוננט 0, ולכן אין הכרח לאפשר ערך 0 בייצוג המנטיסה. לעיתים קיימים שני ערכים: 0+ ו-0-.

אופן ייצוג מסוים בנקודה צפה מורכב, אם כן, מבסיס שלם, מאופנים לייצוג המנטיסה והמעריך ומאוסף ערכים מיוחדים.

דוגמאות:

  • 1012 × 1.78 = 1,780,000,000,000
  • 10-12 × 1.78 = 0.00000000000178
  • 239 × 1.52 = 835,628,837,109.76
  • 101 × 4.8 = 48
  • 25 × 1.5 = 48

יצוג ערך בנקודה צפה מתאים לכתיב מדעי והנדסי מקורב של מספרים גדולים מאוד וקטנים מאוד. האקספוננט מייצג את סדר הגודל של הערך, והמנטיסה מייצגת את הספרות המשמעותיות שלו. למשל, מהירות האור היא 299,792,458 מטר לשנייה, ערך זה ניתן לרשום גם בקירוב כ-‎2.99×108, כלומר סדר הגודל הוא 108 מטרים לשנייה ויש כ־2.99 יחידות מסדר גודל זה.

פעולות על מספרים בשיטת הנקודה הצפה

עריכה

כפל - כל אחד מהפרמטרים יעודכנו בהתאם לתנאים הבאים:

  • סימן - אם אחד הערכים שלילי התוצאה שלילית, אחרת חיובית.
  • אקספוננט - חיבור המעריכים.
  • מנטיסה - כפל בינארי בין המנטיסות.

תכונות הכפל:

חיבור - כל אחד מהפרמטרים יעודכנו בהתאם לתנאים הבאים:

  • אקספוננט - כותבים את המספר הקטן ביותר בצורה כזו שהמעריכים יהיו שווים (נזיז את הנקודה ימינה או שמאלה בהתאם).
  • מנטיסה - חיבור בינארי של המנטיסות.
  • נורמליזציה - נבצע נורמליזציה בסיום (כלומר, נזיז את הנקודה ונגדיל\נקטין את המעריך בהתאם)

תכונות החיבור:

בעיות בייצוג נקודה צפה

עריכה

אי-דיוק ושגיאות עיגול

עריכה

אחת הבעיות המרכזיות של שיטת הנקודה הצפה היא אי-דיוק, כיוון שבבסיס 2 לא ניתן לסמן במדויק שבר שהמחלק שלו מורכב מגורמים נוספים. למשל, ניתן לייצג בבסיס 2 רבע במדויק, אבל המספר 0.1 לא יכול להיות מיוצג באופן מדויק לפי בסיס 2 (בעיה זו קיימת גם בייצוג בשיטת הנקודה הקבועה בבסיס 2). המספרים שלא ניתנים לייצוג מדויק מיוצגים בעזרת עיגול. למשל, בשפות תכנות שמשתמשות בשיטה זאת (כגון שפת C), 0.1 + 0.2 = 0.30000000000000004 (במקום 0.3).[1]

בניגוד לשיטת הנקודה הקבועה, שבה שגיאת העיגול הגדולה ביותר קבועה, בשיטת הנקודה הצפה שגיאת העיגול גדלה ככל שהמעריך גדל. ערכה של שגיאת העיגול הוא המנטיסה הקטנה ביותר שניתנת לייצוג כפול הבסיס בחזקת המעריך. כדי להקטין ככל האפשר את שגיאת העיגול יש להקטין את המעריך לקטן ביותר האפשרי. ייצוג בנקודה צפה בעזרת המעריך הקטן ביותר האפשרי באופן הייצוג המסוים נקרא מנורמל. בדרך כלל אופן הייצוג של המנטיסה מאפשר רק ייצוג מנורמל.

מידת אי-הדיוק עלולה לגדול ככל שמבוצעות פעולות נוספות על המספר.

ספיגה

עריכה

תוצאת פעולה בין מספר גדול מאוד ומספר קטן מאוד יכולה להיות שונה מהמספר הגדול מאוד בפחות מרמת אי-הדיוק. למשל, ייתכן שבאופן ייצוג מסוים 1099 = 1 + 1099. במקרה כזה, המספר הגדול "סופג" את המספר הקטן לתוכו.

תכונה זו גורמת לכך שתכונות אריתמטיות מוכרות כגון חוק הקיבוץ וחוק הפילוג לא תקפות בייצוג בנקודה צפה. לכן, ישנה חשיבות לסדר הפעולות, ושני ביטויים זהים לכאורה יפיקו תוצאות שונות. למשל, 1- = 1 - (1099 - 1099) לעומת 0 = (1 - 1099) - 1099.

גלישה וחמיקה

עריכה

פעולה על מספרים בנקודה צפה עלולים לגרום לגלישה (overflow) אם מעריך התוצאה גדול מהניתן לייצוג. במקרה כזה, התוצאה תהיה בדרך כלל אינסוף (חיובי או שלילי).

כאשר תוצאת פעולה על מספרים בנקודה צפה היא בעלת מעריך קטן מהניתן לייצוג נגרמת חמיקה (underflow). במקרה כזה, התוצאה תהיה סימון מיוחד למספר שונה מ-0 אבל קטן (אם חיובי) או גדול (אם שלילי) מכל מספר חיובי או שלילי אחר.

פעולה לא חוקית

עריכה

כאשר מבוצעת פעולה לא חוקית, למשל שורש ריבועי של מספר שלילי, התוצאה תהיה NaN לפי תקן ה-IEEE.

נקודה צפה במחשב

עריכה

בזכות האפשרות לייצוג מספרים באופן ספרתי, שיטת הנקודה הצפה היא שיטה מקובלת לייצוג מספרים במחשב (בנוסף לייצוג מספרים בנקודה קבועה). מרבית המחשבים המודרניים מממשים את תקן IEEE 754 לייצוג בנקודה צפה.

יתרונו העיקרי של ייצוג בנקודה צפה על-פני ייצוג בנקודה קבועה הוא היכולת לייצג טווח רחב הרבה יותר של מספרים (בגודל נתון של מילה), הנחוץ בחישובים במספרים גדולים מאוד, או קרובים מאוד לאפס. במחשב "גולם א", למשל, היה גודל מילה גדול במיוחד של 75 סיביות, והחומרה ביצעה חישובים בשיטת נקודה צפה, שבה סיבית אחת לסימן, 10 סיביות למעריך ו־64 סיביות למנטיסה. כך יכלו לייצג מספרים שגודלם עד 21024 × 263, לעומת ייצוג מספרים שגודלם עד 274 בלבד בייצוג בנקודה קבועה.

חישובים במחשבי-על נעשים בדרך כלל באריתמטיקה של נקודה צפה, ולכן מהירותם של מחשבי-על נמדדת ב-FLOPS (קיצור של FLoating point Operations Per Second).

בזיכרון המחשב נקודה צפה נשמרת בשיטת סדר בתים כאשר כל 8 ביטים צמודים נשמרים בכתובת מסוימת בסדר מסוים.

ראו גם

עריכה

קישורים חיצוניים

עריכה
  מדיה וקבצים בנושא נקודה צפה בוויקישיתוף
  • נקודה צפה, באתר MathWorld (באנגלית)

הערות שוליים

עריכה
  1. ^ הסבר קצר של התופעה באנגלית, באתר 0.30000000000000004.com