Bitwise Scanner
Jump to navigation
Jump to search
Bitwise Scanner is a bitwise language created by User:A. It is based on scanning a bitwise tape.
Commands
(): Execute the code block if the current bit is 0. {}: Execute the code block if the current bit is 1. []: Sequentially query the bitwise tape, from the lowest digit to the highest digit. ~: Multiply the current bit by -1 and add 1. Equivalent to flipping the bit. X: Stop the scanning.
The increment procedure
000->001 001->010 010->011 011->100
We can conclude that the algorithm is(without doing math):
If the lowest digit is zero, Flip the lowest bit Otherwise(if the lowest bit is 1), scan from the lowest digit to the highest digit: If the current bit is 1, flip this bit Otherwise (current bit is 0) flip this bit and stop scanning
This can be achieved in Bitwise Scanner like this:
(~){[{~}(~X)]}
The decrement procedure
111->110 110->101 101->100 100->011 011->010 010->001
The main algorithm for this is:
If the lowest bit is 1: Flip the lowest bit Otherwise(if the lowest bit is 0): Scan the binary array: If the current bit is 0: Flip the current bit Otherwise: Flip the current bit and stop scanning
This can be achieved as:
{~}([(~){~X}])
Computational Class
This language is not Turing complete, or even FSM complete, as it cannot store state from bit to bit. Consider, for example, a program that sets every bit to the previous bit's value. This would be impossible to do in Bitwise Scanner.