שפת מכונה ("שפת מחשב נמוכה") היא כל שפת מחשב יסודית במובן זה שאליה מתורגמות כל שפות המחשב האחרות הגבוהות יותר (ככלל דרך תוכנת תרגום).
מערכת האותיות ("ביטים") של כל שפת מכונה נמנית בשיטת מנייה נתונה כגון שיטת מנייה אונארית (אות אחת), שיטת מנייה בינארית (שתי אותיות), שיטת מנייה הקסה-דצימאלית (שש עשרה אותיות) וכדומה.
בספרות תחום המחשוב, שפת המכונה הטיפוסית להדגמת המושג היא בינארית ומערכת האותיות שלה מורכבת משתי אותיות שהן הספרות 0 ו-1 (אם כי באותה מידה יכלו להיות גם A או B וכדומה); בגלל ששפת המכונה הטיפוסית מכילה רק שתי אותיות הביטויים הכתובים בה הם ארוכים מאד במובן זה שנדרשות המון אותיות בכדי ליצור כל ביטוי (כגון מילה "בודדה" בעלת משמעות התואמת את ארכיטקטורת החומרה).
תאורטית ניתן לבצע פיתוח תוכנה (במובן הרחב או המלא של המונח) עם שפות מכונה בלבד, מבלי להשתמש בשפות מחשב מופשטות או לחלופין "גבוהות" יותר, אך פיתוח תוכנה כזה ידרוש כתיבת ביטויים כה ארוכים, דומים ומבלבלים (בכדי שכל אחד מהם יהיה בעל משמעות ייחודית) ולכן גם יצירת מסמכים כה ארוכים (הרבה יותר מבשפות מחשב מופשטות יותר וגבוהות יותר) כך שבדרך כלל מלאכה זו לא תיעשה על ידי בני אדם, אלא על ידי תוכנות תרגום אשר מתרגמות קוד מופשט יותר (כגון קוד סף ועל-סף) לשפת מכונה.
שפת מכונה לעומת מידע בזיכרון
מידע השמור בזיכרון של מחשב שמור כביטים (אותיות של שפת מכונה), כגון 0 ו-1 ולכן מהווה קוד מכונה אם כי קוד כזה יכול לייצג מידע "גולמי" (כגון טקסט של מסמך, תמונה או וידאו) ולא בהכרח יייצג קוד מכונה המשקף קוד תכנות מופשט יותר; לפיכך, קוד מכונה יכול לייצג מידע גולמי כמו שהוא יכול לייצג קוד תוכנה בכלל וקוד מקור בפרט, מופשט יותר, המורה על מבנה, התנהגות ועיצוב של תוכנה המבצעת פעולה מוגדרת.
הערות כלליות
- 8 ביטים (bits) שקולים ל-1 בייט (byte)
- קובץ "גדול" אשר המידע שבו הינו בשפת מכונה בינארית נקרא BLOB שזה ראשי תיבות של Binary Large OBject; קובץ כזה יהיה מהיר יותר להרצה חוזרנית קובץ שתורגם מקוד מקור בשפת סף או שפת על-סף לשפת מכונה במקום לתרגם אותו חוזרנית כי זה חוסך משאבים והרצתו תדרוש פחות אנרגיה מאשר אם המידע שבו היה מיוצג בשפות מופשטות יותר משפת מכונה בינארית