דילוג לתוכן
  • חוקי הפורום
  • פופולרי
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • בהיר
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • כהה
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
מתמחים טופ
  1. דף הבית
  2. קטגוריות בהרצה
  3. תכנות
  4. C++
  5. עזרה הדדית - C++
  6. מדריך | אסמבלי- קצת על בינארי וHex (שאני לא חובב בלשון המעטה.)

מדריך | אסמבלי- קצת על בינארי וHex (שאני לא חובב בלשון המעטה.)

מתוזמן נעוץ נעול הועבר עזרה הדדית - C++
1 פוסטים 1 כותבים 28 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • B מנותק
    B מנותק
    Bugs Bunny
    כתב נערך לאחרונה על ידי Bugs Bunny
    #1

    # קצת על בינארי והקס.

    לפני שנמשיך קצת על : בינארי והקסדצימלי.

    למה בינארי?

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

    דלוק או כבוי.

    1 או 0.

    וזהו.

    לכן המידע הדיגיטלי במחשב מיוצג בבסיס 2, שנקרא בינארי (Binary).

    אנחנו רגילים לכתוב:

    0 1 2 3 4 5 6 7 8 9
    

    כי אנחנו עובדים בבסיס 10.

    בבינארי יש רק:

    0 1
    

    לכן המספר:

    10
    

    בבסיס 2 הוא בעצם 2 בבסיס 10.

    וזה מזכיר את המשפט (@בנימין-מחשבים )

    "יש 10 סוגי אנשים: אלה שמבינים בינארית ואלה שלא."

    אלה שמבינים בינארית יודעים ש־10 זה 2.

    ואלה שלא... מחכים ל־9 הבאים. שלא יבואו. 😄


    Bit

    חשוב לזכור!

    Bit הוא יחידת המידע הקטנה ביותר שיש במחשב

    ביט אחד יכול להיות:

    0
    

    או:

    1
    

    כלומר יש לו שתי אפשרויות בלבד.

    אם יש ארבעה ביטים:

    1010
    

    יש לנו ארבעה ביטים נפרדים:

    1 0 1 0
    

    כל אחד מהם יכול להיות 0 או 1.

    ואם יש שמונה ביטים:

    10101100
    

    יש לנו Byte אחד, כלומר 8 ביטים.

    1 0 1 0 1 1 0 0
    <------ 8 ------->
    

    זה חשוב כי בהמשך באסמבלי תפגשו כל הזמן במונחים כמו:

    Bit
    Byte   = 8 bits
    Word   = 16 bits
    DWORD  = 32 bits
    QWORD  = 64 bits
    

    אז למה לא בינארי?

    כי זה סיוט לבני אנוש...

    נניח השורה הבאה.

    1101111010101101
    

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

    פה נכנס Hexadecimal, או בקיצור Hex.


    הקס - בסיסי 16 בספירה

    הקסדצימלי הוא פשוט בסיס 16.

    במקום עשר ספרות כמו בבסיס 10:

    0 1 2 3 4 5 6 7 8 9
    

    יש לנו 16 אפשרויות:

    0 1 2 3 4 5 6 7 8 9 A B C D E F
    

    האותיות מייצגות את המספרים:

    A = 10
    B = 11
    C = 12
    D = 13
    E = 14
    F = 15
    

    למה בסיס 16?

    עיקרון פשוט ומאוד שימושי:

    16 = 2⁴

    כל ספרה אחת בהקס מייצגת 4 ביטים.

    לדוגמה:

    0000 = 0
    0001 = 1
    0010 = 2
    0011 = 3
    0100 = 4
    0101 = 5
    0110 = 6
    0111 = 7
    1000 = 8
    1001 = 9
    1010 = A
    1011 = B
    1100 = C
    1101 = D
    1110 = E
    1111 = F
    

    במקום לכתוב:

    1101111010101101
    

    אפשר לחלק לארבע.

    1101 1110 1010 1101
    

    ולהמיר כל קבוצה לספרת Hex:

     D    E    A    D
    

    ולכן:

    1101111010101101₂ = DEAD₁₆
    

    אותו מידע בדיוק.

    צורה יותר קריאה (אני ממש לא מסכים😕 )


    איך זה נראה באסמבלי?

    באסמבלי, כשתראו מספר Hex, בדרך כלל תראו לפניו 0x.

    לדוגמה:

    mov rax, 0xDEAD
    

    ה־0x אומר:

    "המספר כתוב בהקסדצימלי."

    כלומר:

    0xDEAD
    

    דרך אחרת לכתוב אותו ערך בבינארי:

    1101 1110 1010 1101
    

    או בעשרוני:

    57005
    

    שלושת הייצוגים מתארים את אותו ערך:

    57005₁₀
    = DEAD₁₆
    = 1101111010101101₂
    

    לדוגמה:

    mov rax, 0xFF
    

    או:

    mov rax, 255
    

    מה שונה בהקס?

    אבל:

    בבסיס 16 אנחנו צריכים 16 ספרות, אבל יש לנו רק:

    0-9
    

    פשוט ממשיכים באותיות:

    A = 10
    B = 11
    C = 12
    D = 13
    E = 14
    F = 15
    

    ולכן אפשר לראות דברים כמו:

    0xDEAD
    0xBEEF
    0xCAFE
    

    אחד המפורסמים הוא:

    0xDEADBEEF
    

    לסיכום:

    בזיכרון של המחשב אין באמת "Hex".
    Hex הוא דרך שבה אנחנו כותבים ומציגים מידע.
    גם "בינארי" הוא דרך הייצוג שלנו למידע הדיגיטלי.
    בפועל, בזיכרון יש מצבים פיזיקליים שאנחנו מייצגים כ־0 ו־1.
    לכן אם בזיכרון יש למשל:

    10101100
    

    אפשר להציג את אותם 8 ביטים כ:

    10101100    ← בינארי
    AC          ← Hex
    172         ← עשרוני
    

    זה לא אומר שיש בזיכרון שלושה דברים שונים.

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


    אז למה Hex?

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

    אבל לכתוב בינארי זה סיוט:

    11111111100000001111010110101010
    

    ב־Hex זה הופך ל:

    0xFFF0F5AA
    

    הרבה יותר קצר, הרבה יותר קל לראות ולזהות מבנים. (עובדים עם זה המון..)

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

    לדוגמה:

    1011 0010 1111 0100
    

    הופך ל:

    B    2    F    4
    

    כלומר:

    0xB2F4
    

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

    תגובה 1 תגובה אחרונה
    6

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

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

    בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

    הרשמה התחברות

    • התחברות

    • אין לך חשבון עדיין? הרשמה

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