עזרה בפענוח תפקידו של מקרו מסוים - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

עזרה בפענוח תפקידו של מקרו מסוים


theone2324

Recommended Posts

שלום,

יש לי מקרו שנכתב כחלק מקוד בC שמדמה סימולציה מסוימת, שאינני מצליח להבין מה בתכלס המקרו הזה בודק.

הנה:

BN(data,n) (((data)&(1<<(n)))>>(n))

מתרגום חופשי הבנתי שהוא מקבל שני שלמים AND בין data ל2^n את התוצאה מחלק ב2^n,

הרצתי את המקרו בכמה לולאות אבל לא הצלחתי למצוא בפלט שום קשר לוגי...

אשמח לקבל עזרה מה המשמעות של המקרו הזה, מה לדעתכם המקרו הזה בודק?

תודה.

קישור לתוכן
שתף באתרים אחרים

הפעולה הזו:

1<<n

היא "הזזה" של הביט למקום ה-n, כלומר היא מחזירה מספר שהביט במקום ה-n שלו דלוק הוא 1, וכל השאר הם 0.

כשעושים לזה & עם data, מקבלים מספר שכל הביטים שלו הם 0, פרט לביט במקום ה-n, שהוא הביט ה-n של data.

לבסוף, "מזיזים" חזרה את הביט במקום ה-n חזרה למקום ה-0 באמצעות <<.

אגב, פתרון קצת יותר "יעיל" היה זה:

BN(data,n) (((data)>>(n) & 1)

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...