שלאה מראיון שנשאלתי.

omerbt

New member
שלאה מראיון שנשאלתי.

1 נתון מספר בינארי, 8 סביות. התרגיל הוא לקבל את תמונת הראי של המספר. דוגמה 10110100 הופך ל 00101101. תחשבו real time
 

DNile

New member
אני חושב שדנו כבר בחידה הזאת..

או שזה היה בדרך לחדר אוכל בשביל ארוחת ערב? unsigned char Fliper(unsigned char Flipee) { int Fliped = ((Flipee >> 4) & 0x0F) | ((Flipee << 4) & 0xF0); Fliped = ((Fliped >> 2) & 0x33) | ((Flipee << 2) & 0xCC); Fliped = ((Fliped >> 1) & 0x55) | ((Flipee << 1) & 0xAA); return Fliped; } הרעיון - קודמים הופכים חצאים. אח"כ בתוך כל חצי כזה כזה, הופכים את החצאים שלו, ובתוך כל חצי של חצי, הופכים את החצאים שלו, וכן הלאה, עד שלא ניתן לחצות יותר. איך חושבים פה Real time? ניתן למימוש בעזרת פעולות לוגיות בסיסיות כמובן. זה גם רץ בלי לולאות ובזמן קבוע.
 

ahab

New member
לחשוב realtime?

אוקיי... תחזיק טבלה (מערך, אם בא לך) בגודל 256. קבל את המספר ב-unsigned char, תשתמש בו כאינדקס לגישה לטבלה, ותחזיר את הערך שקיבלת מהטבלה. 3 נק' למי שיגלה מה יש בטבלה :)
 

omerbt

New member
ט"מ

אנשי הRT מאוד אוהבים להשתמש בטבלאות כאלה, ובשמם המקצועי - Lookup Table דבר זה מאפשר לממש פונקציות מתמטיות מסובכות בזמן קצר ביותר, על חשבון הזיכרון. כמובן שלא תמיד אפשר, אבל אם יודעים את טווח הקלט, זה פיתרון מצויין.
 

1אברהם

New member
עוד פתרון מהיר ללא שימוש בזיכרון

במעבד יש להוסיף פקודת אסמבלר שמבצעת היפוך ביטים ברגיסטר נתון. המימוש בחומרה הוא די פשוט ואפילו אין צורך ברגיסטרי עזר נוספים, פשוט לדגום לכניסת הרגיסטר את מוצא הרגיסטר בהיפוך ביטים. נידמה לי שברוב DSP המתקדמים יש פקודה כזו
 
למעלה