Main logo www.4project.co.il
כל הרכיבים לפרוייקט שלכם
עגלת קניות

העגלה ריקה

האם המוצר במלאי?
[X]
עמוד המוצר מציג את רמת המלאי האמיתית, הזמינה במחסנינו בישראל.
פרטים נוספים
איך מזמינים ומשלמים?
[X]
ההזמנה והתשלום מתבצעים רק דרך האתר.
איסוף או משלוח? כמה זה יעלה?
[X]
האתר מציע 5 אפשרויות משלוח וגם אפשרות לאיסוף עצמי מהמחסן.
אחרי הוספת המוצרים לעגלת הקניות, אפשר לראות בה את האפשרויות, המחירים והערכת זמני הגעת המשלוח.
המחיר יחושב לפי גודל ומשקל המוצרים שבחרת.
פרטים נוספים
מתי ההזמנה מוכנה?
[X]
אין צורך לעדכן אותנו טלפונית על ביצוע ההזמנה. אנו רואים אותה מיד ומטפלים בה במהירות.
כמה מהר? לפי הסטטיסטיקה של 3 חודשים האחרונים, הכוללים גם חגים וחופשים, הזמנות שבוצעו בשעות אלה (יום חמישי בין השעות 2 ל-3) היו מוכנות תוך שעה ו-18 דקות.
פרטים נוספים
ייצור ושירותים
מחלקות מוצרים

פירוט שפת תכנות - >>, << (הזזת סיביות שמאלה וימינה)

על ידי Alex » ה' ספטמבר 18, 2014 4:21 pm
בשפת C/C++ יש שני אופרטורים של הזזת סיביות: >> - הזזה שמאלה ו-<< הזזה ימינה. פעולות אלה גורמות לסיביות של אופרנד הרשום מצד שמאל של האופרטור לזוז שמאלה או ימינה מספר פעמים המצויין באופרנד הרשום מצד ימים של האופרטור.

פרטים נוספים על מתמטיקת סיביות שאפשר למצוא כאן TODO (אנגלית).

תחביר
קוד: בחר הכל
variable << number_of_bits

variable >> number_of_bits

פרמטרים בתחביר:
variable - משתנה מסוג byte, int או long
number_of_bits integer - מספר שלם הקטן או שווה ל-32

דוגמה
קוד: בחר הכל
    int a = 5;        // binary: 0000000000000101
    int b = a << 3;   // binary: 0000000000101000, or 40 in decimal
    int c = b >> 3;   // binary: 0000000000000101, or back to 5 like we started with


כשאתם מזיזים ערך X ב-Y סיביות משאלה (x << y), אז Y סיביות השמאליות ביותר של X הולכות לאיבוד.
קוד: בחר הכל
    int a = 5;        // binary: 0000000000000101
    int b = a << 14;  // binary: 0100000000000000 - the first 1 in 101 was discarded


אם אתם בטוחים ששום סיבית עם ערך 1 לא יוצאת מתחום המשתנה, אז דרך קלה להסתכל על הזזת סיביות שמאלה זה הכפלה של מספר מצד שמאל של סימון ההזזה ב-2 בחזקת המספר מצד ימין של הסימון. לדוגמה, כדי לייצר מספרים בחזקת 2 תוכלו להשתמש בביטויים הבאים:
קוד: בחר הכל
    1 <<  0  ==    1
    1 <<  1  ==    2
    1 <<  2  ==    4
    1 <<  3  ==    8
    ...
    1 <<  8  ==  256
    1 <<  9  ==  512
    1 << 10  == 1024
    ...


כשאתם מזיזים ערך X ב-Y סיביות ימינה (x >> y) והסיבית הגבוהה ביותר היא בערך של 1, אז ההתנהגות של הפעולה תלויה בסוג הנתון של ה-X. אם סוג הנתון הוא int, אז כפי שכבר הוזכר, הסיבית הגבוהה ביותר מציינת האם המספר הוא שלילי או לא. במקרה זה מסיבות היסטוריות ערך הסיבית משוכפלת לסיביות מימינה:
קוד: בחר הכל
    int x = -16;     // binary: 1111111111110000
    int y = x >> 3;  // binary: 1111111111111110

התנהגות זו (הנקראה sign extension) היא בדרך כלל לא ההתנהגות שרציתם. במקום זה יכול להיות שתרצו שאפסים יכנסו מצד שמאל של המספר המוזז ימינה. מתברר שהכללים של הזזה ימינה שונים למספרים שלמים ללא סימן (unsigned int), אז אתם יכולים להכריח את המהדר להכניס אפסים מצד שמאל ע"י שימוש ב-typecast לסוג נתון שהוא unsigned:
קוד: בחר הכל
    int x = -16;                   // binary: 1111111111110000
    int y = (unsigned int)x >> 3;  // binary: 0001111111111110


אם אתם לא מבטלים את ה-sign extension, תוכלו להסתכל על הזזה של סיביות ימינה כעל חילוק במספר בחזקת 2. לדוגמה:
קוד: בחר הכל
    int x = 1000;
    int y = x >> 3;   // integer division of 1000 by 8, causing y = 125.



ראו גם:
פירוט שפת תכנות לסביבת Arduino


עמוד זה הוא תרגום של bitshift left (<<), bitshift right (>>) לפי רישיון Creative Commons Attribution-ShareAlike 3.0.