# IGEM:Melbourne/2008/BioClock/Binary counting

Binary counting (based on 2) is done in the same a way as decimal counting (based on 10, as we do everyday). For example,

if we want to represent number 3 in binary numbers (bits), $3 = 1\times 2 + 1\times 1 = 1\times 2^1 + 1\times2^0 = 11~(base ~2)$

to represent number 4 in binary, $4 = 1\times2^2 + 0\times2^1 + 0\times2^0 = 100~(base ~2)$

to represent number 5 in binary, $5 = 1\times4 + 0\times2^1 + 1\times1 = 1\times2^2 + 1\times2^0 = 101~(base~ 2)$

Binary numbers can represent arbitarily large numbers just as digital numbers, e.g. if we have a binary number 1011011,

26 25 24 23 22 21 20
1 0 1 1 0 1 1
= $1\times2^6 + 0\times2^5 + 1\times2^4 + 1\times2^3 + 0\times2^2 + 1\times2^1 + 1\times2^0 = 64 + 0 + 16 + 8 + 0 + 2 + 1 = 91~(base~10)$

### Implementing Binary expression on "bacteria counter"

Ok, so how can we implement this in bacteria systems? Say we have 3 bacteria: B2 B1 B0, each with its own characteristic colour (or other traits) when its expression is turned on, e.g. B2=red B1=green, B0=blue. Also, each B(n) needs the expression outcome only from B(n-1) plus a toggle control to express its own gene. Then we can read off the current number just by reading the color combinations (or other characteristic traits). For example,

B2 B1 B0 Binary Decimal(time)
clear clear clear 000 0
clear clear blue 001 1
clear green clear 010 2
clear green blue 011 3
red clear clear 100 4
red clear blue 101 5
red green clear 110 6
red green blue 111 7

So for instance if our colour combination is red, green, blue, then we know our current time is 7, if colour combination is just red, we know it's time 4. Every expression of B(n) depends only on input from B(n-1) plus another toggle control. So the only bacteria determining counting speed is B0 (just like in a stop watch where the counting speed is entirely dependent on the last digit). Maybe we can race the real clock by adjusting the expression rates!

As we know ALU (Arithmetic Logical Unit) is also based on binary number operation. This idea could be extended to be implemented on binary addition, substitution, multiplication.