QuoteSince programming must use on/off switches to work:
Show us how '1' isn't usually '0', and how one might arrive at such an equivalence through a more or less correct procedure.
It's actually two discreet values of electrical charge.
(generally for PC based systems it is .5 volts and 0 volts.)
.5 represents a 1
0 represents a 0
In digital systems it's either or.
Now, before you ask what happens when it's .25!
There is actually a threshold.
so it's more like
0 - .2 = 0
.21 - .22 = fuzziness and an error introduction, however, it is highly unlikely this will occur.
.23 - .75 = 1
.76+ = blown gate.
Basically, they are electrical values above and below a certain threshold.
You have a bunch of different gates that allow operations to be performed
So, it's all electrical voltages running through a bus (groups of wires) and the interaction of those voltages on that bus with gates. It's how everything is performed inside of a computer.
I hope that answered your question.
I'll try and give a more clear example without delving to far into digital logic
mov(ax, 7)
mov(bx, 3)
add(ax, bx)
ax refers to a register which is nothing more than a large group of gates
same with bx
the result of an add is always stored in cx, another register, or group of gates at a defined location
binary group 8421
7 = 0101
1 = 0001
So, in the ax register it places: .5 volts on the 1st line
0 ... 2nd
.5 ... 3rd
...
bx same procedure but for a '1', 1st .5, 2nd 0, 3rd 0 etc...
then ax and bx are routed through an adder, another more complicated series of gates.
the adder takes each of those series as inputs and produces an output which is then routed to register cx.
These are now the inputs to your adder.
http://en.wikipedia.org/wiki/Carry_propagation#Full_adderThis is really as general as I can make it.