פורסם 2011 בינואר 3014 שנים שלום,יש לי מקרו שנכתב כחלק מקוד בC שמדמה סימולציה מסוימת, שאינני מצליח להבין מה בתכלס המקרו הזה בודק.הנה:BN(data,n) (((data)&(1<<(n)))>>(n))מתרגום חופשי הבנתי שהוא מקבל שני שלמים מבצע AND בין data ל2^n את התוצאה מחלק ב2^n, הרצתי את המקרו בכמה לולאות אבל לא הצלחתי למצוא בפלט שום קשר לוגי...אשמח לקבל עזרה מה המשמעות של המקרו הזה, מה לדעתכם המקרו הזה בודק?תודה.
פורסם 2011 בינואר 3014 שנים הפעולה הזו:1<<nהיא "הזזה" של הביט למקום ה-n, כלומר היא מחזירה מספר שהביט במקום ה-n שלו דלוק הוא 1, וכל השאר הם 0.כשעושים לזה & עם data, מקבלים מספר שכל הביטים שלו הם 0, פרט לביט במקום ה-n, שהוא הביט ה-n של data.לבסוף, "מזיזים" חזרה את הביט במקום ה-n חזרה למקום ה-0 באמצעות <<.אגב, פתרון קצת יותר "יעיל" היה זה:BN(data,n) (((data)>>(n) & 1)
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.