עבור לתוכן

שאלה על אופרטור ב-C

Featured Replies

פורסם

what does the next line do?

sampletable[0] = ((AdcRegs.ADCRESULT0>>4));

sample table is a vector, and ADCRESULT is a 16 bit register...

the real question is what does the >> operator do.

thanks:)

פורסם

מחלק ב 16

ויותר עמוק זה מזיז את כל הביטים 4 מקומות ימינה ומעלים את ה 4 ביטים שהיו בצד ימין בהתחלה

פורסם
  • מחבר

מחלק ב 16

ויותר עמוק זה מזיז את כל הביטים 4 מקומות ימינה ומעלים את ה 4 ביטים שהיו בצד ימין בהתחלה

מז"א מעלים? כותב שם 0? או שזה שיפט מעגלי? כי כשאני מציג את ADCRESULT>>4 ואת ADCRESULT הם אמורים להיות אותו דבר עד כדי שיפט ימינה ב-4?

אם שניהם מוגדרים כ Unsigned int16 האם אמורות להיות בעיות מיוחדות שאני צפוי להתקל בהן?

פורסם

הכוונה מעלים זה ככה:

01101100 לפני

00000110 אחרי

כל ביט זז X מקומות ימינה והיבטים בצד ימין בסוף נעלים וביטים בצד שמאל החדשים הופכים ל 0

פורסם

ונזכיר שבד"כ כאשר המקום הוא signed int אז הקומפיילר מקמפל << כ-arithmetic right shift (כלומר כאשר נכנסות סיביות חדשות משמאל, הם משוכפלים מהסיבית השמאלית במיותר המקורית, שידועה גם בשם most significant bit).

ארכיון

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

דיונים חדשים