מדוע הדמויות באנגלית זקוקות ל- Pewer Bytes לייצג אותן מאשר תווים ב- Alphaets אחרים?
בעוד שרובנו כנראה מעולם לא הפסיקו לחשוב על זה, תווים אלפביתיים הם לא כל אותו גודל במספר בייטים שנדרש כדי לייצג אותם. אבל למה זה? היום של SuperUser Q & A פוסט יש את התשובות לשאלה הקורא סקרן.
מפגש השאלות והתשובות של היום מגיע אלינו באדיבות SuperUser - חלוקה מחודשת של Stack Exchange, קיבוץ מונחה על ידי הקהילה של אתרי אינטרנט של Q & A.
חלקית ASCII תרשים מסך באדיבות ויקיפדיה.
השאלה
SuperUser הקורא khajvah רוצה לדעת מדוע אלפבית שונים תופסים כמויות שונות של שטח דיסק כאשר נשמר:
כאשר אני שם 'א' בקובץ טקסט ולשמור אותו, זה עושה את זה 2 בתים בגודל. אבל כאשר אני שם דמות כמו '¼' (מכתב מן האלפבית הארמני) ב, זה עושה את זה 3 בתים בגודל.
מה ההבדל בין אלפבית במחשב? מדוע אנגלית תופסת פחות מקום כאשר היא נשמרת?
מכתבים הם אותיות, נכון? אולי לא! מהי התשובה למסתורין האלפבית הזה?
התשובה
תורמי SuperUser Doktoro Reichard ו ernie יש את התשובה עבורנו. ראשית, דוקטורו רייכארד:
אחד מתוכניות הקידוד הראשונות שפותחו לשימוש במחשבים רגילים הוא ASCII (קוד אמריקאי סטנדרטי להמרת מידע). הוא פותח בשנות השישים בארצות הברית.
האלפבית האנגלי משתמש בחלק מהאלפבית הלטיני (למשל, יש מעט מילים מודגשות באנגלית). יש 26 אותיות בודדות באותו האלפבית, לא בהתחשב במקרה. והיה גם צריך להתקיים מספרים בודדים וסימני פיסוק בכל תוכנית מעמיד פנים לקודד את האלפבית האנגלי.
שנות ה -60 היו גם זמן שבו המחשבים לא היו כמות הזיכרון או שטח דיסק שיש לנו עכשיו. ASCII פותחה להיות ייצוג סטנדרטי של אלפבית פונקציונלי בכל המחשבים האמריקאים. באותו זמן, ההחלטה לעשות כל תו ASCII 8 סיביות (1 בתים) ארוך נעשה בשל הפרטים הטכניים של הזמן (מאמר ויקיפדיה מזכיר את העובדה קלטת מחוררת החזיקה 8 סיביות במצב בכל פעם). למעשה, את ערכת ASCII המקורי יכול להיות מועבר באמצעות 7 סיביות, ואת השמיני יכול לשמש בדיקות זוגיות. התפתחויות מאוחרות יותר הרחיבו את ערכת ASCII המקורית כדי לכלול מספר תווים מודגשים, מתמטיים ומסתיימים.
עם הגידול האחרון של השימוש במחשב ברחבי העולם, יותר ויותר אנשים משפות שונות היו גישה למחשב. פירוש הדבר, שלכל שפה, יש לפתח מפות קידוד חדשות, באופן בלתי תלוי בתכניות אחרות, שיסתיימו אם ייקראו ממסופים שונים בשפה.
Unicode התגשם כפתרון לקיומם של מסופים שונים על ידי מיזוג כל הדמויות המשמעותיות האפשריות למערכת תווים אחת מופשטת.
UTF-8 היא דרך אחת לקודד את התווים Unicode. זהו קידוד רוחב משתנה (כלומר, תווים שונים יכולים להיות בגדלים שונים) והוא תוכנן עבור תאימות לאחור עם ערכת ASCII לשעבר. ככזה, ערכת התווים ASCII תישאר בית בגודל אחד בעוד כל התווים האחרים הם שניים או יותר בתים בגודל. UTF-16 היא דרך נוספת לקודד את התווים Unicode. בהשוואה ל- UTF-8, תווים מקודדים כמערכת אחת או שתיים של יחידות קוד 16 סיביות.
כפי שנאמר בהערות אחרות, הדמות 'A' תופסת בית בודד בעוד ש- '¼' תופסת שני בתים, המציינים קידוד UTF-8. הבית הנוסף בשאלה המקורית נבע מקיומו של תו חדש.
ואחריו התשובה מ ernie:
1 בתים הם 8 סיביות, ולכן הם יכולים לייצג עד 256 (2 ^ 8) ערכים שונים.
עבור שפות הדורשות אפשרויות רבות יותר מזה, לא ניתן לשמור על מיפוי פשוט של 1 עד 1, ולכן יש צורך בנתונים נוספים כדי לאחסן תו.
שים לב שבדרך כלל, רוב הקידוד משתמש ב -7 סיביות הראשונות (128 ערכים) עבור תווי ASCII. זה משאיר את 8 סיביות, או 128 ערכים נוספים עבור תווים נוספים. הוסף תווים מודגשים, שפות אסיאתיות, קירילית, וכו 'ואתה יכול בקלות לראות מדוע 1 בתים אינו מספיק להחזיק את כל התווים.
יש לך משהו להוסיף להסבר? נשמע את ההערות. רוצה לקרוא תשובות נוספות ממשתמשים אחרים בעלי ידע טכנולוגי מתמצא? בדוק את נושא הדיון המלא כאן.