// 04_Operators.java - אופרטורים ב-Java

public class Operators {
    public static void main(String[] args) {
        // אופרטורים אריתמטיים
        int a = 10, b = 3;
        System.out.println("a + b = " + (a + b));   // 13
        System.out.println("a - b = " + (a - b));   // 7
        System.out.println("a * b = " + (a * b));   // 30
        System.out.println("a / b = " + (a / b));   // 3 (שלם!)
        System.out.println("a % b = " + (a % b));   // 1

        // חילוק עשרוני
        double d = 10.0 / 3;
        System.out.println("10.0 / 3 = " + d);

        // אופרטורי השמה
        int x = 5;
        x += 3;    System.out.println("x += 3: " + x);   // 8
        x -= 2;    System.out.println("x -= 2: " + x);   // 6
        x *= 4;    System.out.println("x *= 4: " + x);   // 24
        x /= 3;    System.out.println("x /= 3: " + x);   // 8
        x %= 3;    System.out.println("x %= 3: " + x);   // 2

        // הגדלה והקטנה
        int y = 5;
        System.out.println("\ny++: " + y++);    // 5, ואז y = 6
        System.out.println("y אחרי: " + y);     // 6
        System.out.println("++y: " + ++y);      // 7
        System.out.println("y אחרי: " + y);     // 7

        // אופרטורי השוואה
        int p = 5, q = 10;
        System.out.println("\np == q: " + (p == q));
        System.out.println("p != q: " + (p != q));
        System.out.println("p < q: " + (p < q));
        System.out.println("p > q: " + (p > q));
        System.out.println("p <= q: " + (p <= q));

        // אופרטורים לוגיים
        boolean t = true, f = false;
        System.out.println("\nt && f: " + (t && f));
        System.out.println("t || f: " + (t || f));
        System.out.println("!t: " + !t);

        // short-circuit
        int divisor = 0;
        if (divisor != 0 && 10 / divisor > 2) {
            System.out.println("זה לא ידפיס");
        } else {
            System.out.println("short-circuit עבד - לא חילקנו באפס");
        }

        // אופרטור טרנרי
        int age = 20;
        String status = (age >= 18) ? "בוגר" : "קטין";
        System.out.println("\nstatus: " + status);

        // אופרטורים ביטיים
        int bitA = 5;  // 0101
        int bitB = 3;  // 0011
        System.out.println("\n5 & 3 = " + (bitA & bitB));   // 0001 = 1
        System.out.println("5 | 3 = " + (bitA | bitB));   // 0111 = 7
        System.out.println("5 ^ 3 = " + (bitA ^ bitB));   // 0110 = 6
        System.out.println("5 << 1 = " + (bitA << 1));    // 10
        System.out.println("5 >> 1 = " + (bitA >> 1));    // 2
    }
}
