BINARY/OPERATORS 1g 2024-06-24 laplante@plcb.ca GOWEB/Language


title: “BINARY/OPERATORS” author: “laplante@plcb.ca” date: 2024-06-24 version: “1.0.0”

category: “GOWEB/Language”

Description

The following binary operators are defined in GoWeb:

  1. Binary OR (| or |=)
  2. Binary AND (& or &=)
  3. Binary XOR (^ or ^=)
  4. Binary left shift (<< or <<=)
  5. Binary right shift (>> or >>=)
  6. Binary NOT (~)

Examples

0b001 | 0b010;

return

3

res={{
    0b001 | 0b010;
    1 | 2;
    1 | 2.0;
    1 | "2";
    1 | "2.0";

    "\n2\n";

    1.0 | 2;
    1.0 | 2.0;
    1.0 | "2";
    1.0 | "2.0";

    "\n3\n";

     "1" | 2;
     "1" | 2.0;
     "1" | "2";
     "1" | "2.0";

    "\n4\n";

    "1.0" | 2;
    "1.0" | 2.0;
    "1.0" | "2";
    "1.0" | "2.0";
}}.

return

res=33333
2
3333
3
3333
4
3333.

res={{
    0b111 & 0b110;
    7 & 6;
    7 & 6.0;
    7 & "6";
    7 & "6.0";

    "\n2\n";

    7.0 & 6;
    7.0 & 6.0;
    7.0 & "6";
    7.0 & "6.0";

    "\n3\n";

     "7" & 6;
     "7" & 6.0;
     "7" & "6";
     "7" & "6.0";

    "\n4\n";

    "7.0" & 6;
    "7.0" & 6.0;
    "7.0" & "6";
    "7.0" & "6.0";

}}.

return

res=66666
2
6666
3
6666
4
6666.

res={{
    0b1010 ^ 0b1100;
    10 ^ 12;
    10 ^ 12.0;
    10 ^ "12";
    10 ^ "12.0";

    "\n2\n";

    10.0 ^ 12;
    10.0 ^ 12.0;
    10.0 ^ "12";
    10.0 ^ "12.0";

    "\n3\n";

     "10" ^ 12;
     "10" ^ 12.0;
     "10" ^ "12";
     "10" ^ "12.0";

    "\n4\n";

    "10.0" ^ 12;
    "10.0" ^ 12.0;
    "10.0" ^ "12";
    "10.0" ^ "12.0";
}}.

return

res=66666
2
6666
3
6666
4
6666.

res={{
    0b10 << 2;
    2 << 2;
    2 << 2.0;
    2 << "2";
    2 << "2.0";

    "\n2\n";

    2.0 << 2;
    2.0 << 2.0;
    2.0 << "2";
    2.0 << "2.0";

    "\n3\n";

     "2" << 2;
     "2" << 2.0;
     "2" << "2";
     "2" << "2.0";

    "\n4\n";

    "2.0" << 2;
    "2.0" << 2.0;
    "2.0" << "2";
    "2.0" << "2.0";
}}.

return

res=88888
2
8888
3
8888
4
8888.

res={{
    0b1000 >> 2;
    8 >> 2;
    8 >> 2.0;
    8 >> "2";
    8 >> "2.0";

    "\n2\n";

    8.0 >> 2;
    8.0 >> 2.0;
    8.0 >> "2";
    8.0 >> "2.0";

    "\n3\n";

     "8" >> 2;
     "8" >> 2.0;
     "8" >> "2";
     "8" >> "2.0";

    "\n4\n";

    "8.0" >> 2;
    "8.0" >> 2.0;
    "8.0" >> "2";
    "8.0" >> "2.0";
}}.

return

res=22222
2
2222
3
2222
4
2222.

res={{
    printf("%!b(MISSING)", ~0b00001010&0xff); "\n";
    ~10&0xff; "\n";
    ~10&0xff;"\n";
    ~10&0xff;"\n";
    ~10&0xff;"\n";

    "\n2\n";

    ~10.0&0xff;"\n";
    ~10.0&0xff;"\n";
    ~10.0&0xff;"\n";
    ~10.0&0xff;"\n";

    "\n3\n";

     ~"10"&0xff;"\n";
     ~"10"&0xff;"\n";
     ~"10"&0xff;"\n";
     ~"10"&0xff;"\n";

    "\n4\n";

    ~"10.0"&0xff;"\n";
    ~"10.0"&0xff;"\n";
    ~"10.0"&0xff;"\n";
    ~"10.0"&0xff;"\n";
}}.

return

res=11110101
245
245
245
245

2
245
245
245
245

3
245
245
245
245

4
245
245
245
245
.

res={{
    a := 0b1000; a |= 1; a; "\n";
    a = 0b1010; a &= 2; a; "\n";
    a = 0b100; a ^= 0b1100; a; "\n";
    a = 8; a <<=2; a; "\n";
    a = 8; a >>=2; a; "\n";
}}.

return

res=9
2
8
32
2
.