פורסם 2009 בפברואר 2316 שנים שלום לכולם,אני עובד ב-visual studio 2005 ויש לי בעיה די מעצבנת,הכי פשוט לתאר אותה עם דוגמא:הצהרתי על משתנה :signed short int a;עכשיו אני עושה השמה לערך:a = 0xaeכעת אם אני מסתכל בערך של a אני רואה שהערך שלו:a=0xffffae , וזה לא הערך שאני רוצה.ברור לי ש- a בבינארתי מתחיל ב-1 ולכן הוא חושב שהמספר שלילי, יש דרך לעקוף את זה?מי שמציע פיתרון אז דבר אחד : אני לא יכול לשנות את הטיפוס ל unsigned , זה קוד חיצוני שאני קורא ממנו.תודה מראש,שי
פורסם 2009 בפברואר 2316 שנים נשמע לי מוזר. האם אתה מסתכל על הערך ישר אחרי ההשמה או אחרי שיש מניפולציה אחרת בקוד החיצוני ? למה ש a=0x0ae יתן תוצאה שונה מ a=0xae ? ממה שאני זוכר short הוא לפחות 15 ביט כך שאין לו בעיה להחזיק מספר שכזה.
פורסם 2009 בפברואר 2316 שנים ברור שנוצרת בעיית overflow עבור השמה כזו לshort !http://irc.essex.ac.uk/www.iota-six.co.uk/c/e6_bitwise_not_complement.aspבלוק 3
פורסם 2009 בפברואר 2316 שנים מה ? לא הבנתי משם איך יש בעיה בהשמה ואיפה אתה רואה שהוא עושה פה פעולות על ביטים בכלל.
פורסם 2009 בפברואר 2316 שנים מה קורה אם אתה משים 0x10 ?תנסה להשתמש בint או ב%d בהדפסה לראות את הערך של המספר. איך מוגדר בו unsigned short int (הוא מוגדר כ16 ביט - 0x0000 - 0xFFFF )אתה שם לב שאתה משים ערכים בבסיס אוקטלי (בסיס 8) ?
פורסם 2009 בפברואר 2316 שנים אם אני שם 0x10, אז יש 0x10, כל ערך בין 0x00 עד 0xFFFE ייוצג ככזה ב signed short int. גם 0xAE).
פורסם 2009 בפברואר 2516 שנים מחבר הבעיה פחות או יותר נפתרה.כאשר דיבגתי את התוכנה, נעזרתי ב-watch של ה-visual , והערך שהוא הראה היה נראה כשגויאבל אם אני מסתכל על הערך ב-hex אני רואה שזה הערך הנכון.כמו שנאמר באמת כל ערך שה- MSB שלו הוא 1 , נוספים לו FFFFים.אבל זה לא הערך האמתי שלו, אלא מה שמתורגם..תודה רבה רבה!!
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.