ABA


"שאלה בשפת C, משתנה מטיפוס unsigned vs signed"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #10750 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 10750
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   01:26   25.06.12   
אל הפורום  
  שאלה בשפת C, משתנה מטיפוס unsigned vs signed  
 
   אני לא מצליח למצוא את ההבדל ביניהם.
כלומר אני יכול לצור משתנה

unsigned int x = -10;
printf("%d", x); //prints -10

מצד שני כשאר עושים if אז הוא לא מתנהג יפה.


if(x < -1)
print("it will never be here");

מה הקטע המפגר הזה מישהו יכול להסביר לי?


אגב איך אני עושה פעולות חיבור על מספרים בינאריים?
ומה זה xor?


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  unsigned מספר לא מסומן, CaTz 25.06.12 08:45 1
     מה זה מס' בינארי....? CaTz 25.06.12 08:47 2
  למספר -10 ולמספר -10 בלי סימן (מספר ממש גדול) inno3D 25.06.12 19:01 3
  כי אתה עושה קאסטינג כפול ldan192  25.06.12 21:16 4
     אבל למה הוא נופל בתנאי? dvir8 26.06.12 16:50 5
         בגלל שהמשתנה x מוגדר להיות בלי סימן אז הוא יודע להבדיל inno3D 26.06.12 19:10 6
             ניתן לעשות signed לטיפוסים שהם לא int/char? (ל''ת) dvir8 26.06.12 23:46 7
                 אתה מתכוון unsigned? אפשר לכל הטיפוסים inno3D 27.06.12 10:09 8
                     אוקי תודה dvir8 27.06.12 10:14 9
  כשאני עושה if על טיפוסים שונים מתבצע casting? בגלל זה? dvir8 04.07.12 11:45 10
     תחשוב שזה אופרטור שמקבל LVALUE ו-RVALUE של unsigned ldan192  04.07.12 20:04 11

       
CaTz
חבר מתאריך 2.10.04
14537 הודעות
   08:45   25.06.12   
אל הפורום  
  1. unsigned מספר לא מסומן,  
בתגובה להודעה מספר 0
 
   כלומר אתה מכריז שאתה עובד עם מספרים חיוביים.
כשאתה עושה printf עם %d, האחוז d הזה אומר שאתה מתייחס למספר כמספר מסומן.
נראה לי שיש %u בשביל הדפסה של unsigned.

ולכן עדיין אתה רואה את המספר השלילי.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
CaTz
חבר מתאריך 2.10.04
14537 הודעות
   08:47   25.06.12   
אל הפורום  
  2. מה זה מס' בינארי....?  
בתגובה להודעה מספר 1
 
   כל מספר ניתן לייצג בינארית
ז"א שחיבור של שני מס' בבינארית זה פשוט חיבור של שני מספרים והצגת התוצאה כבינארית.

לגבי XOR,
http://en.wikipedia.org/wiki/Xor


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
inno3D
חבר מתאריך 21.4.02
4533 הודעות
   19:01   25.06.12   
אל הפורום  
  3. למספר -10 ולמספר -10 בלי סימן (מספר ממש גדול)  
בתגובה להודעה מספר 0
 
   יש אותו סימון בבינארי
אז כנראה "%d" מציג את המספר כאילו זה מספר עם סימן

כאילו למספר -1 ולמספר הכי גדול של int יש את אותו מספר בבינארי
11111111111111111111111111111111


xor מחזיר מספר עם הביטים 1 שמופיעים במספר הראשון או במספר השני (ולא בשניהם)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   21:16   25.06.12   
אל הפורום  
  4. כי אתה עושה קאסטינג כפול  
בתגובה להודעה מספר 0
 
פעם מ-10- למקבילה של המשלים ב-2,
פעם שניה מ-x שהוא unsigned חזרה ל-signed.

מכיוון ששניהם מאותו size אז לא גרמת לאיבוד מידע ותקבל אותו ערך.


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   16:50   26.06.12   
אל הפורום  
  5. אבל למה הוא נופל בתנאי?  
בתגובה להודעה מספר 4
 
   ז"א בבדיקה האם קטן ממ -1
איך הוא יודע שלא? הרי הם מיוצגים אותו הדבר בינארית.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
inno3D
חבר מתאריך 21.4.02
4533 הודעות
   19:10   26.06.12   
אל הפורום  
  6. בגלל שהמשתנה x מוגדר להיות בלי סימן אז הוא יודע להבדיל  
בתגובה להודעה מספר 5
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   23:46   26.06.12   
אל הפורום  
  7. ניתן לעשות signed לטיפוסים שהם לא int/char? (ל''ת)  
בתגובה להודעה מספר 6
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
inno3D
חבר מתאריך 21.4.02
4533 הודעות
   10:09   27.06.12   
אל הפורום  
  8. אתה מתכוון unsigned? אפשר לכל הטיפוסים  
בתגובה להודעה מספר 7
 
   Signed זה ברירת מחדל


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   10:14   27.06.12   
אל הפורום  
  9. אוקי תודה  
בתגובה להודעה מספר 8
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   11:45   04.07.12   
אל הפורום  
  10. כשאני עושה if על טיפוסים שונים מתבצע casting? בגלל זה?  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   20:04   04.07.12   
אל הפורום  
  11. תחשוב שזה אופרטור שמקבל LVALUE ו-RVALUE של unsigned  
בתגובה להודעה מספר 10
 


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net