משתנים 101: הכרת המחשב

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

למי שאוהב ביטחון, אני מבטיח לך שההודעה הבאה תהיה פוסט על אבטחות אבטחה כדי שכולם יהיו מרוצים, אם מישהו רוצה ללמוד משהו אחר (כמו git, ניהול שרתים, או שאני לא יודע: p), או להגיב על נושא אחר שלא ניתן לענות עליה בצורה פשוטה בתיבת ההערות, הודע לי ונראה איך נוכל לעבוד את זה 😉

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

Bits

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

תחשוב על מתג תאורה, כאשר המעגל סגור, יש לנו 0 על המסך, כאשר אנו משנים את מיקום המתג, כי א 1🙂 פשוט לא?

עכשיו א 0 ו 1 הם יכולים להיות בעלי דברים רבים, הכל תלוי ביצירתיות שבה אתה לוקח את זה, נניח שאני רוצה לדעת אם מישהו הולך לצפון או לדרום, 1 יכול להיות צפון ו 0בואו נגיד שאני רוצה לדעת אם מישהו הוא גבר או אישה, 1 זה יכול להיות גבר ו 0, אישה 🙂. עכשיו אני רוצה לדעת אם האדם הזה צעיר או זקן (> 22), 0 יכול להיות צעיר ו 1, גבוה יותר. בואו נמשיך לדמיין ... יש לכם חיות מחמד? 1 הייתי אומר כן, בזמן 0 הייתי אומר שלא עכשיו אני רוצה שתקרא איתי את השורה הבאה:

1001

זו הדרך הקצרה לומר ...

Una jóven mujer de no más de 22 años se dirige al norte acompañada de su mascota.

שהוא שונה מאוד מ:

0110 o Un hombre con más de 22 años de edad se dirige solo hacia el sur.

בתים

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

01001011 יש לנו את הבית הזה, עכשיו אנחנו הולכים מימין לשמאל (<-) אני הולך לשים אותם מלמעלה למטה כדי שאוכל לכתוב את משמעותם:

1: הקטע כשהוא במצב 0 מציין שיש לנו את 2 הבאים שהועלו לאפס או 2^0. הבאר הזו שאנחנו יודעים שקולה ל 1.

1: החלק השני, עכשיו המיקום 12^1 שזה כמו לומר 2

0: סיבית שלישית ... זה אמור להיות 2^2, אך מכיוון שהוא אינו פועל, אנו הולכים להשאיר אותו פעיל 0

1: ביט רביעי, 2^3 u 8 ???

0: זהה ל 0

0: אחר 0

1: עכשיו אנחנו בפנים 2^6 o 64

ולבסוף 0 , אנחנו כבר יודעים מה זה אומר 🙂 עכשיו אנחנו הולכים להוסיף את התוצאות שלנו ולהשוות אותן עם הטבלה הבאה 🙂 יש לנו 75 אז בואו נחפש זאת בטור עֶשׂרוֹנִי ונראה מה מופיע ב Char

תוצאת תמונה לטבלת ascii

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

Word

עכשיו יותר מאחד יגידו לי, אבל מה אם אני צריך מספר גדול מ- 255? או היכן אוכל למצוא דמויות אחרות כמו היפנים? ובכן התשובה היא פשוטה, בואו נרכיב 2 bytes. עכשיו שיש לנו שניים, המספר האפשרי של שילובים שיש לנו הוא 2^16 o 65536 תוצאות אפשריות, כגון 0 הוא אחד מאלה, המקסימום האפשרי הוא 65535. האם המספר הזה מצלצל בפעמון? זוכר את המספר המרבי של יציאות במערכת לינוקס? אני משאיר להם שיעורי בית 😉

מילה כפולה ומילה מרובעת

למתמטיקה יותר יש גם פורמטים ספציפיים, מילה כפולה להכיל, כפי שרבים כבר דמיינו 2 word o 4 bytes (o 32 bits) מידע, כמו לומר:

11111111111111111111111111111111 אל 0 a 4 294 967 295

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

אבל זה כמובן משאיר אותנו עם עמדה אחת פחות לעשות את הכפל! אז שלנו0 a 4 294 967 295 הופך להיות:

-2,147,483,648 a +2,147,483,647

עכשיו, לרבים מאיתנו כבר יש 64 bits, וזה הערך של a מילה מרובעת, יכולים להיות לנו ערכים הנעים בין 0 a 18 446 744 073 709 551 615. זה מספר גדול 🙂

למה 8 ביט?

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

עם חלוף הזמן, עד היום, פיתחו המעבדים יכולת להזיז 16 ביטים, 32 ביטים ו ... 64 ביטים.

מה הקשר לקלדה?

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

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

שֶׁלוֹ. כריסטופר דיאז ריברוס

בצד ימין יש לנו את ערכי הקובץ limits.h ומשמאל לקחנו אחד מהערכים האלה (unsigned short int) והקצנו מספר גבוה מזה המקביל. כתוצאה מהדר מזהיר אותנו שאנחנו משתמשים לרעה בזיכרון בגלל הצורה הבינארית של 66666 לא יכול להתאים בצורה הבינארית של 65535. זה מוביל אותנו לשיעור ב ביצועים כאשר אנו מתכנתים, אם הערך שלך לא יגדל הרבה עם הזמן, או אם אינך זקוק לערכים גדולים כמו אלה של לְהַכפִּיל o מילה מרובעתשימוש בסוג הנכון מפחית את כמות הזיכרון המבוקשת על ידי המעבד, מה שמרמז על מהירות אחזור נתונים גבוהה יותר אם הוא מחושב היטב.

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

שֶׁלוֹ. כריסטופר דיאז ריברוס

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

דע את המשתנים שלך

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


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.

  1.   לואיס דיג'ו

    כתוב היטב, תמציתי וברור, בו זמנית מעניין לכל הקהל. עבודה יפה.

    1.    ChrisADR דיג'ו

      תודה רבה, ברכות 🙂

  2.   ג'ון ישו דיג'ו

    הסבר נהדר. אתה מכונה.

    1.    ChrisADR דיג'ו

      תודה

  3.   ראובן דיג'ו

    הסבירו היטב תודה

    1.    ChrisADR דיג'ו

      תודה לך שקראת את זה במלואה 🙂

  4.   דייגו דיג'ו

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

    1.    ChrisADR דיג'ו

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

  5.   פדרו דיג'ו

    אתה מורה מצוין ונדיב מאוד ללמד את מה שאתה יודע. מזל טוב ותודה.

    1.    ChrisADR דיג'ו

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

  6.   משהו דיג'ו

    לא קראתי הסבר טוב יותר על הנושא, הדוגמה הראשונה היא מבריקה

    למרות שלא שמעתי את המילה (כמו משתני 16 סיביות), את המילה הכפולה או את המילה המרובעת

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

    1.    ChrisADR דיג'ו

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

  7.   סרג'יו דיג'ו

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

    1.    ChrisADR דיג'ו

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

  8.   דוד דיג'ו

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

    1.    ChrisADR דיג'ו

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

  9.   מארט דיג'ו

    האם תוכל לכתוב פוסט על מכונת טיורינג?

    1.    ChrisADR דיג'ו

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

  10.   אלן לארה דיג'ו

    וואו, תודה רבה איזה הסבר טוב.

    לגבי

    1.    ChrisADR דיג'ו

      תודה רבה אלן 🙂 בברכה

  11.   רמון הידאלגו דיג'ו

    קראתי את ההודעה הקודמת שלך! תודה רבה על ההסבר, למרות שאני חושב שלעולם לא אסיים להבין את המילה.

    1.    ChrisADR דיג'ו

      שלום רמון 🙂 תודה רבה שקראת את שניהם. אם יש בכך שימוש כלשהו, ​​ה"מילה "היא התפתחות של בתים, זה כמו המעבדים, לפני שהיו 8 סיביות, אחרי 16 סיביות וכו '... זה בגלל שבכל פעם אנחנו דורשים יותר מקום תהליך ומהירות או כוח טובים יותר ... המילה 'נולדה מכיוון שמרחב ה'בייט' נפל, וזהה עם המילה 'הכפולה' וה'מרובעת '- האבולוציה הטבעית היא שגורמת לנו להוסיף כוח ומרחב להמשיך להתפתח 🙂

      לגבי

  12.   אנונימי דיג'ו

    בשנת 2018 זו אני לומד לתכנת כן או כן, תודה

    1.    ChrisADR דיג'ו

      אני שמח 🙂 תשתדל !! לחיים

  13.   גיירמו דיג'ו

    תודה רבה לך, המשך כך. אני כבר יודע לתכנת אבל אני ממתין לתורתך, שתכנותי האוטודידקטיות מלאות בשיטות גרועות.

    1.    ChrisADR דיג'ו

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

  14.   אדגר דיג'ו

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

    1.    ChrisADR דיג'ו

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

  15.   טירירירי דיג'ו

    שלום, האם המספר בין 0 ל 18 446 744 073 709 551 615 תואם לערך העשרוני של 64 סיביות או שהוא מתייחס לערך אחר? ובכן, חישוב הכוח של 2 ^ 64, התוצאה שאני מקבל היא: 18 446 744 073 709 552.

    1.    ChrisADR דיג'ו

      הי טירירירי, אני חושב שיש לך בעיית עיגול, אתה יכול לנסות להשתמש בפקודה bc? היא שפת תכנות שנועדה להיות מדויקת ככל האפשר, ברגע שבתוכה זה רק צריך לעשות 2^64, אולי זה יפתור את זה כמו שיידע אותי איך זה התנהל, ברכות

      . הערך האמיתי הוא 18 446 744 073 709 551 616, אבל אנחנו מפחיתים 1 כי 0 נחשב כערך אפשרי 🙂

      1.    טירירירי דיג'ו

        תודה, חישבתי את זה בעזרת מחשבון כוח שמצאתי ברשת (https://es.calcuworld.com/calculadoras-matematicas/potencias/) וזו הייתה התוצאה שהיא נתנה לי.
        וכן, כבר ניסיתי את הפקודה bc, והיא נותנת לי למעשה את הערך שרשמת.

  16.   טירירירי דיג'ו

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

    1.    ChrisADR דיג'ו

      אתה יכול לנסות את הגרסה הניידת, אלה נראים קצת יותר ברורים, זה נושא wordpress: / מצד שני, את כל כותרות ה- C ניתן למצוא ב / usr / include /, במקרה זה אתה יכול לבחור לקרוא אותה ישירות אם אתה זה קל יותר 🙂 אנסה להעלות תמונה גדולה יותר כדי לראות אם זה עוזר 🙂

      1.    טירירירי דיג'ו

        תודה, אני חושב שאני צריך להיות סבלני עם זה, הא הא.

  17.   קאטקו דיג'ו

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

    1.    ChrisADR דיג'ו

      אין שום סיבה לקטקיו, בהחלט עדיף להשתמש בספרייה הסטנדרטית, אבל אני יכול להבטיח לך שעדיף לדעת מה מבדיל uint_least8_t ו- uint_fast8_t וזה מושג על ידי הכרת סוגי הנתונים הפרימיטיביים, שהייתה המטרה של הפוסט 🙂 תודה רבה על התגובה ועל קריאת המאמר, ברכות

  18.   ויקטור דיג'ו

    : או הסבר מופתי! הכרתי חלק מהמושגים אבל אני מקבל הרבה מאוד מידע חדש מהפוסט הזה

    1.    ChrisADR דיג'ו

      תודה רבה ויקטור 🙂 כמה טוב שהמאמר יכול לעזור, ברכות

  19.   גיל דיג'ו

    אהבתי מאוד את פייתון כדי להקל על התכנות, ראיתי קורס ב http://zetcode.com/gui/pyqt4/ אהבתי את הטטריס האחרון של: http://zetcode.com/gui/pyqt4/thetetrisgame/
    ריטשתי את הטטריס הזה במהלך קיץ כדי להכניס נקודות, מולטיפלייר ומוזיקה, לאט לאט, אבל מאוד משעשע.

    1.    ChrisADR דיג'ו

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

      1.    גיל דיג'ו

        את זה שעשיתי העליתי (30 מגה-בייט למוזיקה) http://guillermo.molleda.com/Tetris9.7z
        אתה צריך להגדיר מהירות התחלתית שונה עבור כל שחקן או אם אתה מפעיל מחדש נקודות אחרי משחק חדש, ... ויש שלושה שחקנים ששתי בנותיי ישחקו איתי. זה אפילו ממכר.