לדלג לתוכן

טבלאות אמת מוסברות - הבסיס שעליו בנוי כל תנאי בקוד שכתבתם

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

אז מה זו בעצם טבלת אמת

טבלת אמת היא פשוט טבלה שמראה את כל התוצאות האפשריות של פעולה לוגית, עבור כל שילוב אפשרי של קלטים. בעולם הבינארי, כל קלט יכול להיות רק אמת - 1, או שקר - 0. אם יש לכם שני קלטים, יש בדיוק ארבעה שילובים אפשריים: 0-0, 0-1, 1-0, 1-1. טבלת האמת פשוט מפרטת מה התוצאה בכל אחד מהמקרים האלה.

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

שערים לוגיים - הבנים היחידים שמעבד מבין

מעבד לא "מבין" קוד ברמה שאתם כותבים אותו. הוא בנוי מרכיבים חומרתיים זעירים שנקראים שערים לוגיים - logic gates, וכל אחד מהם מיישם בדיוק פעולה בוליאנית אחת, לפי טבלת האמת שלה.

  • שער AND. התוצאה אמת רק אם שני הקלטים אמת. 1 וגם 1 שווה 1. כל שילוב אחר נותן 0.
  • שער OR. התוצאה אמת אם לפחות אחד מהקלטים אמת. רק המקרה של 0 ו-0 נותן 0.
  • שער NOT. קלט יחיד, שהופך את הערך שלו. 1 הופך ל-0, ו-0 הופך ל-1.
  • שער XOR - or exclusive. התוצאה אמת אם הקלטים שונים זה מזה. 0 ו-1, או 1 ו-0, נותנים 1. אבל אם שני הקלטים זהים, התוצאה 0.

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

מפעולה בודדת למעגל שמחשב

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

כשאתם כותבים תנאי כמו if a and b, המהדר בסופו של דבר מייצר הוראות מכונה שמפעילות בדיוק את אותה לוגיקה - שערי AND חשמליים, שמחשבים בתוך שברירי שנייה אם שני התנאים מתקיימים ביחד.

למה זה לא נשאר רק תיאוריה

מעבר לחומרה עצמה, טבלאות אמת מלוות אתכם בכל שכבה של תכנות. תנאים מורכבים בקוד, כמו if (x > 0 and not y) or z, אפשר תמיד לפרק לטבלת אמת ולוודא שהלוגיקה עושה בדיוק את מה שהתכוונתם. זה כלי דיבוג מצוין - כשתנאי מתנהג מוזר, לפעמים הדרך הכי מהירה לתפוס את הבאג היא לכתוב טבלת אמת קטנה ולעבור על כל השילובים בעצמכם.

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

מלוגיקה בסיסית למעבד שלם

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

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

הצטרפו לקהילה בדיסקורד

לסיכום

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