אם הבנתי נכון אתה קולט בידיוק 24 ביטים, כלומר כמו שאמרת נניח אתה עובד עם short int ו-char. אם תעבוד עם integer זה לא באמת יהיה 24 ביטים. האמת שאני לא מבין מה כל כך קשה לעבוד עם 24 ביטים כשלעצמם. בכל מקרה, לא הבאת את כל התרגיל ולכן אני לא יכול לתת לך ייצוג שאני הייתי עובד איתו.ביקשת לדעת איך מיוצג מספר ב-32 ביטים אז אני אסביר לך.
הביט השמאלי ביותר הוא sign bit, אם הוא 0 אז המספר חיובי, אם הוא 1 אז המספר שלילי. מספרים שליליים מיוצגים על ידי משלים 2, מספרים חיוביים מיוצגים רגיל. בשיטת ייצוג 24 ביט (שהמציאו לך) אז הביט ה-23 השמאלי ביותר (סופרים מ-0) יהיה סימן המספר - 0 חיובי, 1 שלילי. ניתן יהיה לייצג בחיוביים שתיים ב-23 פחות אחד. בשליליים יהיה ניתן לייצג עד מינוס 2 ב-23.
אתה רוצה לעשות sign-extension ולמספרים חיוביים זה פשוט להוסיף אפסים משמאל למספרם. כדי להרחיב מספר שלילי, צריך להוסיף אחדים משמאל למספר, כלומר קח את המספר 11111111 ותכפיל אותו בשתיים ב-24 (כלומר shift-left 24 פעמים).
אי אפשר ממש לעבוד עם int ולעשות קאסטינג כי זה לא נכון. צריך ממש לבנות את מבנה הנתונים החדש שלך.
