סיביות

סיביות

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

אגב, מה ההבדל בין פעולת סיביות על unsigned int לבין פעולה כזאת הנעשית על unsigned char?
 

BravoMan

Active member
חומר בנושא?

"סיביות" אינן נושא בפני עצמן. זה פשוט מה שמרכיב כל משתנה, וכל מספר שיש לך במחשב.
&nbsp
כדי להבין אותו, אתה צריך להבין חשבון בינארי, לפחות את הבסיס:
https://goo.gl/Ug2NDD
&nbsp
אין שום הבדל בין פעולת סיביות על unsigned int לאותה פעולה על unsigned char.
&nbsp
ההבדל הוא בגודל המשתנים, ולכן בכמות הסיביות שלהם.
&nbsp
בהנחה ש-int במערכת שלך הוא בגודל 4 בית, יהיו בו 4 * 8 = 32 סיביות.
כבר הוסבר לך ש-char הוא כמעת תמיד בגודל בית אחד, אז יהיו לך רק 8 סיביות לעבוד איתן.
 
האם ניתן לומר שכל ספרה מ-8 סיביות

ולכן מספר בן 3 ספרות יורכב מ-24 סיביות?

ואם מציגים char באופן בינארי, פירוש הדבר שמציגים את ערך האסקי שלו באופן בינארי?
 

BravoMan

Active member
לא.

ספרות עשרוניות לא מתיישבות יפה על כמות של סיביות כי חזקות של 2 הן:
1 2 4 8 16 32 וכו'
&nbsp
אם שמרת במשתנה מסוג char תו כלשהו בקידוד ASCII, זה אכן הערך הבינארי שתראה.
&nbsp
אבל זכור שמכל הבחינות משתנה char הוא סתם משתנה שמחזיק מספר "קטן" (יחסית).
רק אם תבחר לפרש את המספר כקוד ASCII של תו הוא אכן יהיה כזה.
&nbsp
 
ונניח שאני קולט unsigned number=3

האם הוא הוא מיוצג באמצעות 8 ביטים או באמצעות 32 ביטים שזה המקסימום של unsigned?
 

BravoMan

Active member
32 ביטים.

ברגע ששמת מספר בתוך משתנה, כל המשתנה בשימוש.
אין דבר כזה "נותרו לו ביטים פנויים".
&nbsp
כמובן, הייצוג היה אותו ייצוג בין אם תעשה char number = 3 ובין אם תעשה unsigned int number = 3 ההבדל הוא רק בכמות האפסים המובילים.
&nbsp
כמו שלכתוב 003 זה עדיין אותו מספר כמו 3.
 
למעלה