When learning about the architecture of computers and how it works, we are thought that the lowest language that we can find that the machine understands is binary as 1&0. And anything that we input will have to be transformed/converted to binary, but being binary numbers wouldn't that mean that we would need another interpreter/compiler to transform binary into actual machine language? We all know from electronics that a computer is mainly composed of cpu which is an IC that is therefore made out of transistors etc, and the only thing that those tools understand is electricity, therefore electricity will be the lowest understandable language for a computer. So my concern is, is binary really 1s&0s or the 1s&0s are just used to represent the absence and or presence of electricity? Supposing that it's just a representation for absence or presence of electricity, wouldn't there be another intermediate or even lower language between the commands that we input and binary, so that the circuits would know where to send the current to and where not to?
-
2$\begingroup$ I just want to comment on your "absence of electricity" | "The absence of a signal should never be used as a signal." - Julian Bigelow, 1947." $\endgroup$– Dylan MeeusCommented Apr 15, 2014 at 15:11
-
2$\begingroup$ In a sense, I suppose the answer to your question is that there is an underlying "language" of sorts in the physics of electricity on which circuits are based. Basically, nature is like a Turing Machine and the arrangement of wires and components is like the input tape. To come at it from a different angle: computers work by manipulating analog signals (varying continuously in time, space, magnitude, etc.) and interpreting it as approximately digital (varying discretely, as integers, in time, space and magnitude). You're right that 0 and 1 just mean different amounts of electricity. $\endgroup$– Patrick87Commented Apr 15, 2014 at 15:51
-
1$\begingroup$ Just to clarify Yuran, you have it backwards when you say we use 0s and 1s to represent electricity. We use electricity to represent 0s and 1s. $\endgroup$– Joey EremondiCommented Apr 15, 2014 at 17:45
-
$\begingroup$ Here's Claude Shannon's masters thesis, MIT 1937: cs.virginia.edu/~evans/greatworks/shannon38.pdf. It explains how Boolean algebra and relay circuits can be used as models of one another. $\endgroup$– Wandering LogicCommented Apr 15, 2014 at 18:02
-
1$\begingroup$ There is, but it's not the topic of this site. You might want to take your questions about how to actually build processors from wire to Electrical Engineering. $\endgroup$– RaphaelCommented Apr 16, 2014 at 12:17
3 Answers
Digital computers work so that (almost) at any given point in time, any wire carries (roughly) one of two possible voltages, one signifying $0$ and the other signifying $1$. The voltages depend on the convention being used. In this sense, digital computing does work with $0$s and $1$s. However, even digital computers interface with analog devices, such as physical storage and networks. The way that data is encoded in networks can be somewhat different, since several bits can be encoded at once, depending on the encoding.
Let me explain my qualifications in the first sentence above. "Almost" refers to the fact that when wires switch from $0$ to $1$ or vice versa, there will be intermediate voltages. These switches are synchronized across all the wires so that whenever wires are "read", the switch (if any) has already occurred. "Roughly" refers to the fact that the voltages are not exact. There are two small ranges of voltages which correspond to $0$ and $1$. The devices should be able to "read" bits throughout these ranges, but usually "write" them more restrictively.
the question is not exactly clear & has some misconceptions or misapplication of terminology (eg "lower language") but interpreting it in a more general/ metaphorical/ analogical/ loose way, yes:
- one interesting case study here is the logical flip flop (see also How to understand the SR Latch) which because it has a feedback loop, cannot really be analyzed logically in terms of 0's & 1's and has to be analyzed more as an analog device
- the timing of the circuit is crucial in understanding the dynamic nature of the flip flop. an esp useful way of understanding it is a voltage/time plot.
- "beneath" 0's and 1's of logical circuits are continuous/nondiscrete analog voltages, and binary electronics can be said to tightly "control" the analog signals into highly constrained boundaries.
- there are cases where this "breaks down" eg for example on an IC chip, the electronics of defective gates or marginal designs can cause the chip to fail and fall out of the binary "envelope".
- another basic component of non-binary electronics is noise. much of the IC design can be regarded as controlling/minimizing it. in fact binary electronics can be seen as a means of eliminating noise from circuitry to achieve "noiseless" signals.
-
1$\begingroup$ Flip-flops can be analyzed logically - the values of the wires at time $t+1$ depend on their values at time $t$ and the value of the input or inputs at time $t$. $\endgroup$ Commented Apr 16, 2014 at 0:57
-
$\begingroup$ yes but in contrast circuits without feedback can be analyzed without the concept of time, and "logic" in mathematics has no fundamental concept of time (in strong contrast to CS/EE exactly as in the example). also, tying output to input of the same gate doesnt make much sense purely "logically" without the concept of time and a direction of current! $\endgroup$– vznCommented Apr 16, 2014 at 2:16
-
1$\begingroup$ Programs are routinely analyzed with the concept of time. Whenever you have mutable variables you need to take this into account. $\endgroup$ Commented Apr 16, 2014 at 2:56
-
$\begingroup$ right, of course. thats the broad Turing complete or EE conception of "logic". earlier/more limited math logic systems eg propositional logic or boolean algebra (which otherwise large model circuits) have no concept of time. by the way defective ICs are an inescapable part of the manufacturing process and the "passed/verified" chips are called the yield. $\endgroup$– vznCommented Apr 16, 2014 at 2:58
You are asking several different things into one question. Maybe it's a good idea to untangle the problem for yourself. You are talking about physics, definition of the industry and software/computer architecture.
that the lowest language that we can find that the machine understands is binary as 1&0. And anything that we input will have to be transformed/converted to binary.
Let's do this part first. Modern-day computers are based on electrical circuits. For example most ARM processors can run at 5 volts. Because of the way the ARM processor is build in the fabric the processor understand a ~0 volt signal as a 0 bit and ~5 volt as a 1 bit. It is the definition chosen by someone.
but being binary numbers wouldn't that mean that we would need another interpreter/compiler to transform binary into actual machine language?
I do not completely understand what you are asking here. But let's say you are looking from a software perspective. Then, the program eventually will be transformed in actual lines of bits and a line of bits which tell the CPU what to do with the bits. These are fed into the CPU (processing unit) and based on the processor architecture a action will be performed on the data.
We all know from electronics that a computer is mainly composed of cpu which is an IC that is therefore made out of transistors etc, and the only thing that those tools understand is electricity, therefore electricity will be the lowest understandable language for a computer. So my concern is, is binary really 1s&0s or the 1s&0s are just used to represent the absence and or presence of electricity?
As I mentioned a little bit above, it is the way computers are built. You can run the processor on other voltages but it won't work (I think). Because the a particular definition is made about at what voltage a bit is 0 or 1.
Supposing that it's just a representation for absence or presence of electricity, wouldn't there be another intermediate or even lower language between the commands that we input and binary, so that the circuits would know where to send the current to and where not to?
Yup, basically analog signals. But keep in mind most of the time these are converted by an ADC (analog digital converter) into a bit value which represents a predefined voltage on that line.