Menu
Coddy logo textTech

אופרטור AND

שיעור 5 מתוך 17 בקורס מניפולציה על ביטים של Coddy.

האופרטור AND ( &)

AND ביטי הוא אופרטור בינארי הפועל על שתי תבניות ביטים באורך שווה. אם שני הביטים במיקום המושווה בתבניות הביטים הם 1, הביט בתבנית הביטים המתקבלת הוא 1, אחרת הוא 0. הסמל  '&' מייצג את האופרטור AND.

הטבלה שלהלן מציגה פעולת AND על שני ביטים.

x0011
y0101
x & y0001

ניקח דוגמה ונבין טוב יותר את פעולת AND.

בדוגמה שלמעלה ביצענו פעולת AND על (11)10 ו-(6)10 והתוצאה שהתקבלה היא (2)10. פשוט כתבנו את המספרים האלה בצורה הבינארית שלהם והשווינו בין שני הביטים; אם הופיע אפס כלשהו, פשוט כללנו 0 בתבנית הביטים המתקבלת.

שימוש:

int a = 1;
int b = 0;
>> a & b
OUTPUT: 0
challenge icon

אתגר

קל

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

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

מצאו את הקבוצה שחוללה קסם והציגו את המספר הכתוב על האבן הראשונה בקבוצה. 

לדוגמה, נניח שהאבנים שמצא היו מסודרות כך:

[ 5 , 2 , 3 , 6 , 1 , 9 ]

תחילה טים מחלק את האבנים לקבוצות רציפות של 2, ללא חפיפה. { (5,2) , (3,6) , (1,9) }

לאחר מכן הוא מבצע פעולת AND ( & ) על הקבוצות האלה ומגלה שזו הקבוצה הראשונה שתחולל קסם. 5=> (101)2 ו-2=>(010)2. רק הקבוצה הזו מבין שלוש הקבוצות תיתן אפס כאשר מבצעים עליהן פעולת AND.

התוצאה שנקבל היא 5, מכיוון שעלינו להשתמש במספר שעל האבן הראשונה בקבוצה כדי לזהות אותה.

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

נסו בעצמכם

#include <iostream>
#include <vector>
using namespace std;

int MagicStones(vector<int> stone_sequence) {
    // כתבו כאן את הקוד
}

כל השיעורים ביחידה מניפולציה על ביטים

תרגלו בעצמכם: קומפיילר C++ אונליין