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), [math]\displaystyle{ 3 = 1\times 2 + 1\times 1 = 1\times 2^1 + 1\times2^0 = 11~(base ~2) }[/math]
to represent number 4 in binary, [math]\displaystyle{ 4 = 1\times2^2 + 0\times2^1 + 0\times2^0 = 100~(base ~2) }[/math]
to represent number 5 in binary, [math]\displaystyle{ 5 = 1\times4 + 0\times2^1 + 1\times1 = 1\times2^2 + 1\times2^0 = 101~(base~ 2) }[/math]
Binary numbers can represent arbitarily large numbers just as digital numbers, e.g. if we have a binary number 1011011,
[math]\displaystyle{ 2^6 }[/math] | [math]\displaystyle{ 2^5 }[/math] | [math]\displaystyle{ 2^4 }[/math] | [math]\displaystyle{ 2^3 }[/math] | [math]\displaystyle{ 2^2 }[/math] | [math]\displaystyle{ 2^1 }[/math] | [math]\displaystyle{ 2^0 }[/math] |
---|---|---|---|---|---|---|
1 | 0 | 1 | 1 | 0 | 1 | 1 |
= [math]\displaystyle{ 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) }[/math]
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.