# 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.