שאלה

yair24

Member
שאלה

נגיד שאני רוצה לעשות שני דגלים בינריים שיכולים לקבל 0 או 1 אז נגיד שאני עושה מבנה שיש לו שני משתני INT FLAG1 ו-FLAG2 ואז אני יכול להכניס להם 0 או 1 עכשיו יש עוד דרך שאמורה להיות יותר מהירה והיא לעשות משתנה אחד מסוג CHAR שיכול להכיל עד 8 דגלים בגלל שCHAR בנוי מ8 ביטי(00000001 לדוגמא) עכשיו אני מנצל רק שני ביטים נגיד את הכי ימני ואת השני הכי ימני ואני מכין לי פונקציות שיודעות לשים בשני הביטים האלה 0 או 1 למה הדרך הזאת יותר מהירה מהדרך הראשונה אם בכלל? יאיר
 

nahsh

New member
אם זה ב8051,

אז זה בטח יותר מהיר בגלל שיש פקודות אסמבלר על ביטים (הדלקה/כיבוי, ופעולות לוגיות עם ביטים אחרים (בעיקר ביט הcarry). בכל אופן, תשים לב שרוב פקודות ה"ביט ווייז" כלומר AND, XOR וכד´, מהירות יותר מפקודות הMOV, והסיבה היא חומרתית. לכן גם אם נגמר הזיכרון שניתן לפנות אל הביטים שלו, ולא נשארו לך דגלים כאלה, עדיין עדיף לעשות כך, מה גם שזה חוסך זכרון.
 
למעלה