מפעיל ה- XOR בג'אווה

1. סקירה כללית

במדריך קצר זה, אנו הולכים ללמוד על Java XOR מַפעִיל. נעבור קצת תיאוריה על XOR פעולות ואז נראה כיצד ליישם אותם בג'אווה.

2. ה XOR מַפעִיל

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

אז ה XOR ניתן להשתמש באופרטור, למשל, כאשר עלינו לבדוק שני תנאים שאינם יכולים להיות נכונים בו זמנית.

בואו ניקח בחשבון שני תנאים, א ו ב. ואז הטבלה הבאה מציגה את הערכים האפשריים של A XOR B:

ה A XOR B פעולה שווה ערך ל- (A AND! B) OR (! A AND B). סוגריים נכללו לשם הבהרה, אך הם אופציונליים, בתור AND המפעיל מקבל עדיפות על פני אוֹ מַפעִיל.

3. כיצד לעשות זאת בג'אווה?

עכשיו, בואו נראה איך לבטא את ה XOR פעולה בג'אווה. כמובן שיש לנו אפשרות להשתמש ב- && ו || מפעילים, אבל זה יכול להיות מעט מילולי, כפי שנראה.

דמיין א אוטו בכיתה שיש שניים בוליאני תכונות: דִיזֶל ו מדריך ל. ועכשיו, נניח שאנחנו רוצים לדעת אם המכונית היא דיזל או ידנית, אך לא שניהם.

בואו נבדוק זאת באמצעות ה- && ו || מפעילים:

מכונית לרכב = Car.dieselAndManualCar (); סולר בוליאני XorManual = (car.isDiesel () &&! car.isManual ()) || (! car.isDiesel () && car.isManual ());

זה קצת ארוך, במיוחד בהתחשב בכך שיש לנו אלטרנטיבה - Java XOR מפעיל, המיוצג על ידי ^ סמל. זהו אופרטור קצת חכם - כלומר אופרטור שמשווה את הסיביות התואמות של שני ערכים על מנת להחזיר תוצאה. בתוך ה XOR במקרה, אם לשני ביטים מאותה מיקום יש אותו ערך, הסיבית המתקבלת תהיה 0. אחרת זה יהיה 1.

אז, במקום המסורבל שלנו XOR אנו יכולים להשתמש ישירות ב- ^ מַפעִיל:

מכונית לרכב = Car.dieselAndManualCar (); סולר בוליאני XorManual = car.isDiesel () ^ car.isManual ();

ככל שאנחנו יכולים, ^ המפעיל מאפשר לנו להיות תמציתיים יותר בביטוי XOR פעולות.

לבסוף, ראוי להזכיר כי XOR כמו האופרטורים הסיביים האחרים, עובד עם כל סוג פרימיטיבי. לדוגמא, נבחן שני מספרים שלמים 1 ו- 3, שייצוגיהם הבינאריים הם 00000001 ו- 000000011 בהתאמה. ואז, באמצעות XOR המפעיל ביניהם יביא למספר השלם 2:

assertThat (1 ^ 3) .isEqualTo (2);

רק הביט השני שונה בשני המספרים הללו, ולכן התוצאה של ה- XOR המפעיל על סיבית זו יהיה 1. כל שאר הסיביות זהות, ולכן הסיביות שלהן XOR התוצאה היא 0, מה שנותן לנו ערך סופי של 00000010 - הייצוג הבינארי של המספר השלם 2.

4. מסקנה

במאמר זה למדנו על Java XOR מַפעִיל. ראינו שזה מציע דרך תמציתית לבטא XOR פעולות.

כרגיל, ניתן למצוא את הקוד המלא של המאמר ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found