נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: לא מבין משהו בC++

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
אורח
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 17 October 2007 בשעה 11:53 | IP רשוּם
ציטוט אורח

]

קוד:

int x=16;
printf("%d,%d,%d",x,x<<2,x>>2);

למה הקוד הבא מדפיס 16,64,4

זאת אומרת מכפיל ב4 ואז מחלק ב4 ?

מה הדברים האלה עושים << >> ?! אני יודע שאפשר ככה להדפיס עם count

כי אלה אופרטורי זרימה אבל איך זה עובד פה ?

חזרה לתחילת העמוד הצג את כרטיס החבר של אורח חפש הודעות אחרות של אורח בקר בדף הבית של אורח
 
צחי@
משתמש חבר
משתמש חבר


הצטרף / הצטרפה: 02 January 2007
מדינה: Israel
משתמש: מנותק/ת
הודעות: 209
נשלח בתאריך: 17 October 2007 בשעה 12:14 | IP רשוּם
ציטוט צחי@

אופרטור >> שמופעל מימין לאופרנד מסוג int, משמש לפעולת bit shift (חץ שמאלה להזזה שמאלה וימינה להזזה ימינה. האופרנד עובד על המשתנה ברמה הבינארית, למשל,המספר 16 מיוצג בינארית ככה: 10000

פעולת shift מבצעת הזזה לכל אחד מהביטים ימינה או שמאלה, כלומר לאחר הפעולה

1<<x , הערך הבינארי יהיה 01000 - כלומר 8 בבסיס עשרוני.

ואילו לאחר הפעולה 2>>x, הערך הבינארי יהיה 1000000, כלומר 64 בבסיס עשרוני

בגלל האופי של המספרים הבינאריים, הזזה במקום אחד שמאלה משמעותה הכפלה ב-2 והזזה במקום אחד ימינה משמעותה חילוק ב-2 של המספר המקורי.

 

חזרה לתחילת העמוד הצג את כרטיס החבר של צחי@ חפש הודעות אחרות של צחי@ בקר בדף הבית של צחי@
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה