summaryrefslogtreecommitdiff
path: root/examples/broken/bitwise.fy
diff options
context:
space:
mode:
Diffstat (limited to 'examples/broken/bitwise.fy')
-rw-r--r--examples/broken/bitwise.fy31
1 files changed, 31 insertions, 0 deletions
diff --git a/examples/broken/bitwise.fy b/examples/broken/bitwise.fy
new file mode 100644
index 0000000..b124590
--- /dev/null
+++ b/examples/broken/bitwise.fy
@@ -0,0 +1,31 @@
+#*
+ * Examples of how to use bitwise operators
+ *#
+
+# Prints "01\n"
+assert 0 == (put 1 and 0);
+assert 1 == (say 1 and 1);
+
+# Prints "01\n"
+assert 0 == (put 0 or 0);
+assert 1 == (say 0 or 1);
+
+# Prints "01\n"
+assert 0 == (put 1 xor 1);
+assert 1 == (say 1 xor 0);
+
+# Prints "-1" (see "not" operator of NASM why so)
+assert (neg 1) == (say not 0);
+
+# Prints "82\n"
+assert 8 == (put 2 << 2);
+assert 2 == (say 8 >> 2);
+
+# A bit more complex, prints "9\n"
+assert 9 == (say 1 << 5 >> 5 or 2 and 5 xor 8);
+
+# Same result, but with parenthesis:
+assert 9 == (say ((((1 << 5) >> 5) or 2) and 5) xor 8);
+
+# Different parenthesis, different result: "1\n"
+assert 1 == (say 1 << 5 >> 5 or 2 and (5 xor 8));