Objective: Overcome your fear of computers! If you can count to two, then you can master the basics of computers. If you think computers are smarter than you, you are wrong and I will prove it. For normal people, just follow the LOG: comments. Computers are dumb:  comments tell you the computer’s point of view.
For theGEEKS, hackers, programmers, experimenters, and Arduinoites add the
GEEK comments for a more detailed understanding of how computers work.
And don’t worry if you don’t understand some things. I’ve been working with computers for too long and sometimes ‘think’ like one.

LOG(Lazy Old Geek): Remember when you were maybe 3-4 years old and you learned to count up to 10? Well, I don’t. I am a Lazy Old Geek (LOG) and can’t remember back that far. But I could count to ten with my fingers. For a while, I was an instructor in computer technology.

Computers are dumb: Computers can only count to 1. Fortunately they start with 0. So they only know 0s and 1s.

GEEK Speak: The typical human (Non-Geek) numeral system is called decimal, 0-9. The computer numeral system, 0 and 1 is called binary.

LOG Irrelevant: Do you ever think about 0, zero? It is very important. Do you remember Roman numerals? They didn’t have zeros. Maybe that’s why they aren’t used anymore. Oops, I guess they still use it to number SuperBowls. Football fanatics, enough said.
The invention of zero was important. How else would you be able to numericalize your test score in Algebra or maybe sometimes your bank account.

Step 1: Binary Numbers in Computers

Computers are dumb: So I exaggerated a bit. Digital computers don’t know 0s and 1s, all they really know is off and on. Electrically, they really only understand no voltage or voltage. I like to visualize this as a light switch. (See picture) Little kids can understand a light switch. Either it’s off or on. So, simplistically, if there is a voltage there then it represents 1, if there is no voltage, then it is a 0.
LOG: This is like if I have a banana (See picture), I represent it on paper as the word ‘banana’. It is symbolic.

GEEK Speak: For a long time, in computers 0 volts symbolized 0 and 5 volts symbolized 1. While this is still true in some cases, sometimes 3.3V represents 1. And I am fairly certain that internally, some CPUs use even less like 1.8V?
Why: One reason is when you have voltage you have current, voltage and current means energy and energy means heat. So the more voltage you use the more heat is generated. Reducing the voltage means less heat.
Electrical Geek Speak: If you want to get technical, 0 and 1 are actually represented by ranges of voltages. Like 0 was 0V to maybe 1.25V and 1 was 3.75V to 5V. I used to remember what the ranges are exactly but don’t any more and don’t really care, any more.

Arduino: So Arduinos are computers. Since I am an Arduino user, I will often comment on Arduinos. They still use 0V and 5V representing 0 and 1. 

Step 2: Languages

LOG: Humans that speak English use an alphabet of 26 letters. I won’t even get into Japanese which may have more than 10,000 letters (sort of). Humans combine these letters into words to create a language so there are millions of words. But humans can also learn several languages so just think of all the words a person could know.

Computers are dumb: Computers only know one language. It is called machine language. Machine language consists only of 0s and 1s.
Furthermore, a computer only knows one machine language. There are probably hundreds of machine languages but any computer knows only one, the one for the specific CPU (Central Processing Unit) that it uses.

GEEK Speak: Some of you technoGeeks will say: what about those other computer languages like Assembly, C and C++? (See picture) Doesn’t the computer understand them? The answer is no! The actual computer hardware understands only one machine language.
Those other languages were ‘invented’ by humans to make it easier to talk to computers. Humans made interpreters and compilers to translate C and others to that one machine language. Compilers and interpreters translate the English-like program to 0s and 1s for the machine language selected.

Arduino: Arduino users, when you click on the little arrow, this compiles the sketch to the machine language that Arduinos understand. (see picture). The other right arrow, compiles it and sends the machine code to the Arduino.

Step 3: Binary Numbers

LOG: How can computers do anything with just 0s and 1s?
Well, I will tell you but I’m going to have to do a little arithmetic review first.

Okay, let’s say you count up to ten. (See picture). There’s nothing significant with ten until you write it down. From 0 through 9 you have a different number but ten is not a different number. It is made up of two previous numbers 1 and 0. Now the 1 on the left doesn’t mean the same if it was by itself. Can you explain? Well, I’m a computer Geek. I can. It’s called positional notation. The 0 on the right is just a 0. The 1 on the left is 1 multiplied by 10 or 10 because it is in the second position. So as we all know if there was another digit, then it would be multiplied by 100. Positional notation means where a number is locate affects its value. Each position further left increases it value, in this case, by ten times.

Computers are dumb: They have no idea what 22 is. They don’t even understand that 10110 in binary represents 22.
Geek: Positional notation for binary numbers: For the curious, the right most digit value is 0 or 1. If next digit is 1 then multiplied by 2, the next by 2x2 or 4, then next is 2x2x2 or 8, etc. If there is a zero in a position then nothing is contributed to the total, all it is doing is marking the space so the next digit over has a greater value.
Some of you may have heard of something called a byte. A byte is eight 0s and 1s. A byte can contain 256 different values. A computer word has 16 bits so it can contain 65,536 different values.
Geek: Hexadecimal was invented by computer programmers to make it easier to talk to computers. Computers only understand binary but a big binary number is hard to read by normal human, But it is easy to convert to hexadecimal, which is a little easier to read than binary. E.g., A2C7 is a little easier to read then 1010001011000111 for most humans but both are numbers representing the same value which is 41,671 decimal.

Step 4: Computer RAM

LOG: So you may wonder what is RAM? RAM stands for random access memory. It can be some much more picturesque than it used to be. (See picture)

I like to think of memory as a post office full of mailboxes. (See picture) Hopefully, you know what a mailbox is. Each mailbox has a unique address and contains information (letters). A memory module is like a post office. It is a collection of binary numbers each of which has a unique address. To get the information you have to know the address, just like to get your letters, you have to know the box number.

Geek: Writing to memory is like the postman placing letters into the mailbox. Reading from memory is like you taking a letter out of the mailbox and reading it. One difference is that when a computer is turned off, the RAM information is lost.
Random access means the computer can select any address (randomly) and write to it or read from it.

Computers are dumb: Mailboxes can hold multiple letters with all different kinds of information. (Some of you Old readers, like me, may remember getting letters). Computer memory holds only binary numbers 0s and 1s (or no voltage and voltage) and only of a certain size. I had to look it up, modules like the one in the picture has 64 bits in each location. It doesn’t contain alphabet letters or pictures or sounds only 0s and 1s.

Geek: The pictured memory modules have 8Gbytes of data, which is 8 billion bytes which is 8 x 1,000,000,000. So if I understand this correctly since each location holds 64 bits or 8 bytes, then there are 125,000,000 memory locations.
Anyway, it’s a lot of locations but it’s still only 0s and 1s.

Geek: Okay, if you want to get technical. 8Gbytes of RAM usually refers to 8 x 1073741824 or 8 x 230. This is because hardware addresses are either off or on, binary so 30 address lines can access exactly 230 locations.

Geek: There is another type of memory called ROM. These are not very pretty. (See picture) But they have an important purpose. ROM means Read Only Memory. The difference is that the postman cannot change the contents of the mailbox, it can only be read. To a computer, it can only read the 0s and 1s in the ROM. They cannot be changed.

Arduino: The RAM and the ROM are actually in the Atmega chip, in many this is the Atmega328.

Step 5: What Do Those 0s and 1s Mean?

Computers are dumb: To the computer, they don’t mean anything. They’re just numbers. Let’s say in the RAM module at address 000000101 the number is: 1010101111001110000100100011010001010110.

LOG: To the average human it doesn’t mean anything, either. Even to a computer programmer/architect, it likely doesn’t mean much, though she might be able to figure out what it means. Even the computer doesn’t know what it represents but it does know what to do with it. Just like a human language with letters, those 0s and 1s can be combined into words that have meaning.

It could be just a big number like the national debt. (See pictures)
It could be part of a picture.
It could be an instruction to add two numbers (the last picture probably means nothing to you, but it gives you an idea of what a computer sees. The binary is converted to decimal for readability)

Example: We could say that 0 represents lights off or black and 1 represents lights on or white. Let’s take eight bits so 00000000 represents black and 11111111 represents white. So what does 10101011 represent? Well, it is going to be some shade of gray.
Let’s go a little further. Here is a close up picture of an LCD screen. There are probably thousands of these. It could be a computer monitor or a TV. You can actually see this if you use a magnifying glass. I can’t see it very well with my old eyes.
How it works: There are sets of three lights, red, blue and green, the primary colors. Each set of three is called a pixel. If just one, say red, is on then only red will be seen on the screen. Now if all of them are on, then that spot will actually will appear to be white because your eyes can’t separate the individual lights. The next picture is a color spectrum showing how blending different amounts of red, green and blue produce different colors. Now besides being on or off, each light can be turned on various amounts. The number varies per monitor/TV but for now, let’s just say there are eight bits per color or 256 different values. This will be the brightness of the pixel/screen.

Geek: So my computer memory locations contain 8 bytes (64 bits) of data. Each one could contain 2+ pixels of data. My laptop screen is 1280x800 pixels or about 1 million. So it might take about ½ million memory locations to contain the information for a full screen. That’s just a drop in the bucket out of 3Gbytes of memory.

Computers are dumb: So how does the computer know if the number:
1010101111001110000100100011010001010110 is the national debt or a burgundy pixel or instructions to add two numbers. The answer is: it doesn’t know or care. However it does know what to do with it. See next step.

Step 6: CPU

Computers are dumb: The CPU is the Central Processing Unit or the brains of the computer. The CPU knows what to do with machine language instructions. It doesn’t understand them; it just knows what to do with them.

One example of a CPU is the Intel i5 CPU. (See picture). The little silver square is the CPU. The other part is the fan. Remember I talked about heat? This is what dissipates that heat.

Arduino: The CPU for the Arduino is in that little black Atmega328 IC. (See picture) By the way that little black IC also contains the RAM and the ROM for the Arduino computer. Plus some other stuff.

Computers are dumb:Basic CPU process: The CPU has a pretty simply function. It goes to a specific memory address and takes the data in it. This data is treated as a machine language instruction, so the CPU does only what that instruction tells it to do. For example, if the instruction says to take the contents of the next two memory locations and add them and put them in a third location, it will do exactly that.

Geek: Computer addition is pretty simple. It has to be for a dumb computer. 0 + 0 is 0. 0 + 1 is 1. 1 + 0 is 1. 1 + 1 is 0 with a carry. This is like grade school addition but much simpler.

Geek: Now I’m not sure if standard PC instructions are 64 bits, one memory location long or may be 128. I don’t really care but with 64 bits you can have 18446744073709551616 different instructions. And trust me, they can be very complicating. This is something only a dumb computer could love.

Computers are dumb: Like I was saying, the computer has no idea what 1010101111001110000100100011010001010110 is or represents. It just blindly follows its instructions doing what they tell it to do without any knowledge if it is what was meant to be done. There is a special term BSOD (Blue Screen Of Death) which appears if something goes wrong. (See picture)

Geek: So you may wonder, how does the computer know where to start? Well, I’m going to (sort of) tell you. When the computer is first turned on, it always goes to a specific memory location. In the early days of computing, it was either the highest or lowest memory address. I have no idea what it is now or care. But it goes to a specific address. This address points to part of the ROM. By the way this ROM is called the BIOS (Basic Input/Output System). It first performs POST(Power On Self-Test) to see if the basic stuff is working. Then I believe it goes to the hard disk and loads the operating system, e.g., Windows, Linux. Once this is done, it will sometimes just sit there waiting for something like a mouse click to start a program.


Step 7: Hard Drive

Computers are dumb: So what is a hard drive? Well, a hard drive is just a big collection of 0s and 1s. It is similar to RAM in that it each data has an address. I don’t know or care what size data is stored. I think it varies depending on how it is formatted.

One difference is that data is organized into files with file names. The computer still only identifies them by 0s and 1s but to make it easier for humans, the operating system allows them to be sorted into files.

Like RAM, they can be written and read. Unlike RAM, when power is turned off, they do not lose their data. So the hard drive is semi-permanent storage.

Step 8: Motherboard

The motherboard is a big PCB (Printed Circuit Board) that holds the RAM, ROM, CPU and a bunch of other stuff. It’s kind of like the nerve system that ties everything together and the blood system which supplies the energy or power.

Computers are dumb: So I told a little fib. In most personal computers there is some circuitry that is not just 0s and 1s. Do you know what it is? Well, it isn’t an essential feature of the computer but it is the audio circuitry.

Geek: So all sounds and music are stored in RAM and the hard drive as 0s and 1s. The audio circuit contains something called a DAC. A DAC is a Digital to Analog Converter. Remember when I talked about 00000000 being black or 0 and 11111111 being white or 1? I also said that sometimes 1 is 5 volts? Well, let’s say the DAC puts out 0 volts for  00000000 and 5 volts for 11111111. so if the input was 10000000 then the output would be 2.5 volts. Believe it or not 10000000 is about ½ of 11111111.
SuperGeek: Okay, I’m going to get SuperGeeky. So a true analog signal can vary continuously through different voltages. The usual example is a sine wave (See picture) which is a single frequency like a ‘C’. In truth a computer cannot generate a perfect sinewave. It comes out like the stairstep shown in the picture. However the steps are so small, people cannot really distinguish the difference.
Full disclosure: Some audiophile purists claim they can hear the difference and will use only analog audio equipment. Who knows maybe it’s true.

Computers are dumb: So I may have told another little fib. Some personal computers also have a video output called VGA which is also analog and uses DACs as above. Most modern computers are going to DVI, HDMI and Display Port which are all digital, 0s and 1s.

Arduino: So Arduinos have ADCs in them which are Analog to Digital Converters. These do the opposite: taking an analog input and converting it to digital. They also have PWM, which means Pulse Width Modulation. Now technically this is a digital output in that it is 5 volt pulses. But the pulses vary in width and frequency so that they emulate an analog signal.

Step 9: Conclusions

Computers are dumb: Yes, they are. But they are really fast. And they almost never make mistakes. And they don’t get bored doing the same thing over and over again.

<p>Anymore you can get an old computer equivelent that is super small and more energy efficient. </p>
<p>4+ years late for the show:</p><p>The puny brained dinosaurs of the Triassic period could never imagine them getting replaced my humans. They could never for see a possibility of their mass extinction event or process. We humans similarly may never see that one day we may get replaced or evolve into non organic intelligent life. </p><p>Never underestimate the weak or the dumb, too.</p>
<p>You are so right!! As I get older and dumber, my smartphone gets smarter and sometimes seems to do things I can't explain. So does one of my PCs and my tablet. Even my simple Arduinos seem to have a mind of their own. I'm not thinking conspiracy yet but sometimes I wonder . . .</p><p>LOG</p>
Well, computers can easily do some things that we find very hard, but a brain emulator takes a few hours to do the exact processing that a real brain can do in one second. Also, about the &quot;electrical geek speak,&quot; the typical threshold is that a 1 is caused by one volt or more.
VirtualBoxer; <br> <br>I would be interested in reading about anyone claiming to even understand how the real brain processes data let alone duplicate it, Do you have any more information on 'brain emulators' that claim this? <br> <br>I also respectfully disagree with the one volt statement. Most existing computers typically operate on 5V or 3.3V and 1V would not be a logic one in either. See the following: <br>http://forum.allaboutcircuits.com/showthread.php?t=62014 <br> <br>However, this is irrelevant to most people. Unless you are a hobbyist like I am (Arduino) where it can be important. <br> <br>LOG
Do you know what you are talking about? I don't.<br> For example how does Excel work if&nbsp; &quot;Computers are dumb: Computers can only count to 1&quot;?<br> <br> L<br>
Very good question.Excel is a computer program written by some very smart programmers and computer scientists and engineers. It transforms information, say $1,476.26 to those 0s and 1s that the computer can understand. Then it also translates tasks like subtract $200 to 0s and 1s that the computer can understand. Then, it also transforms the 0s and 1s in the results to information that people can understand, like $1,276.26.<br><br>Knowing Microsoft, Excel was probably written in the language C++ and this is transformed into 0s and 1s that the computer can understand. <br><br>So there are some amazing computer programs doing fantastic stuff. But no matter which program they are all transformed into 0s and 1s. <br><br>Hope this helps.<br><br>LOG
The 0s &amp; 1s are abstract concepts, the actual machine is in a state of high &amp; low voltages.<br> You'd do better to emphasise how computers are <em>just machines</em> and any appearance of intelligence is due to unfathomable-complexity.<br> <br> <em>So my computer memory locations contain 8 bytes (64 bits) of data. Each one could contain 2+ pixels of data.</em><br> -you should explain colour-depth so people have an idea about 2+<br> <br> L<br>
You are right about 0s and 1s being an abstract concept. I used to have one of the earliest personal computers, an Altair. I know they had a string of toggles switches labeled 0s and 1s and I think a string of lights (maybe LEDs). They were used to manually load in programs into memory.<br>But these days, 0s and 1s are pretty irrelevant to PCs. I do think they're a little bit easier to understand when explaining how CPUs and RAM works then high and low voltage.<br><br>I don't really know that much about colour-depth. <br><br>LOG
Altair eh, a classic. You've got the fundamentals I got from the ZX Spectrum, and that display has something like 26x32 8-byte (square) blocks with in interesting colour system: You had two of 16 colours per 8-byte block, background/foreground, so your display was effectively monochrome with a 26x32 colour layer. That gives you ~7.5Kb, quite economical but it's only 16 colours or 4-bit.<br> Most monitors run 32-bit these days, which is one byte each RGB plus another for &quot;brightness&quot;.<br> <br> L
Actually, I got a lot of my computer fundamentals from a Heathkit H8. It had a hexadecimal keypad. It was part of a computer correspondence course. The H8 started with a cassette storage which I never really got to work.<br>I guess the ZX Spectrum was from Sinclair who also made the Timex Sinclair. I thought they were pretty neat but don't think I ever bought one.<br><br>I still don't understand 2+ pixels. 32 bit color seems like 4 bytes per pixel so 2 pixels would be 8 bytes but where does the + come from? Maybe I have no idea what i'm talking about.<br><br>LOG
-if you ran an 8-bit (e.g. VGA) display you'd get 8 pixels for 64bits.<br> <br> L
Did you ever wonder how multiple peripherals can all share the same buss?Like what if two devices wanted to communicate at the same time and one output a low level 0 and the other output a high logic 1 what would happen then? Nothing good, that's for sure! That is why there is a third logic state called high Z.<br> <br> <a href="http://en.wikipedia.org/wiki/Three-state_logic" rel="nofollow">http://en.wikipedia.org/wiki/Three-state_logic</a><br> <br> Not so simple after all.
I am familiar with tri-state logic. Tri-state logic does allow multiple devices to be connected to the same bus. But if two devices try to communicate at the same time you will still have a conflict. The trick is to design the system so that only one device can be enabled at any time. <br>I don't know how familiar you are with computer systems but usually they have three busses, address, data and I/O. Most of the time the CPU controls the address bus. RAM and ROM can read it but not change it. Not depending on the address only one RAM or ROM device has access to the data bus and the I/O buss controls whether it's a write or a read. It is amazing all of the steps the system has to go through to do a simple write or read and all of the timing considerations, yet PCs can do millions of operations per second. Then you can add multi-core systems.<br><br>You might also be interested in Ethernet. Unlike computer busses, Ethernet devices communicate asynchronously so two or more devices can attempt to communicate at the same time. I think it's called bus contention. These will occur and it's up to the network protocol to make sure this doesn't cause confusion. The primary tool is called packeting. Packeting does several things. First it limits the amount of time any device can be on the bus, Second it defines where a packet is going and who it's from. Third it is formatted so that if the packet is corrupted say by bus contention, then it will be rejected. <br>(So another problem is if a packet is rejected, how does the sender know to resend it.)<br><br>I guess I may claim that computers are dumb but they are not simple.<br><br>LOG<br>
This is part of a computer I built in the 80s:<br> <br> <a href="http://img708.imageshack.us/img708/7615/p7100104.jpg" rel="nofollow">http://img708.imageshack.us/img708/7615/p7100104.jpg</a><br> <br> <a href="http://img708.imageshack.us/img708/1643/p7100090.jpg" rel="nofollow">The display</a> isn't there, or the power supply. It was a popular thing to do back then. Computers are so cheap, even free today that I do <a href="http://www.youtube.com/watch?v=fHPKaHLzXes" rel="nofollow">other things</a> now. You can see the rest of that here:<br> <br> <a href="https://www.instructables.com/id/TB6560-Microstepping-Bipolar-Chopper-Stepper-Motor/" rel="nofollow">https://www.instructables.com/id/TB6560-Microstepping-Bipolar-Chopper-Stepper-Motor/</a><br> <br> and here:<br> <br> <a href="https://www.instructables.com/id/300-Watt-Linear-Power-Supply/" rel="nofollow">https://www.instructables.com/id/300-Watt-Linear-Power-Supply/</a><br> <br> The PC I use to run that I got for free. It <a href="http://img87.imageshack.us/img87/2250/wedoct27bootchart.png" rel="nofollow">runs pretty good</a> though.<br> <br> I've used <a href="http://www.ethereal.com/" rel="nofollow">packet analyzers</a> so I've some idea of Ethernet too. IRC was a rough place in the 90s.
OK, nice instructable teaching the basics of data. I happen to agree with you on this, but let me play devils advocate here and ask: &quot;If computers are so dumber than us, why is it that we have so much trouble using them?&quot; (I'm sure you've heard that one before!) ;)<br><br>We better watch out though, so many people rely on computers for so much these days, and don't understand how they do what they do! Pretty soon the computers will be smarter than your average user! (I bet the day will come when most people will not even be able to count to 255! Then the computer will be smarter than us!)<br><br>(And yes... I do understand how computers work/think... I used to recover data for a living.)
Speaking as a programmer, I think the reason we have trouble using them is that we don't speak computerese(machine language) as well as computers. Computers are very exacting and logical. You have to tell them exactly what you want them to do in the precise terms they understand. <br>When humans communicate, they are often able to 'understand' what someone is saying even though there are hundreds of different ways to say something. E.g, just think of all the ways you could ask for something to eat. <br>Actually, computers have tried to duplicate some of this with 'fuzzy logic.'<br><br>Another perspective is looking at when human communications fails. This often results is fighting, arguments, shootings, maybe wars. <br><br>I am a little concerned about the kids these days growing up with calculators. Admittedly, I will quite often use my computer calculator or more likely Excel spreadsheet to do some simple calculations but (at least for now), I understand the basic principles. <br>For a while I taught some classes in a technical college and was shocked at how many h.s. graduates lack some basic math skills.<br><br>LOG
I couldn't agree more. One thing I will mention is that computers are not the ones developing &quot;fuzzy logic&quot;; humans are. If the computers were the ones developing their own logic, then they are smarter than most humans. (I'm sure that's what you meant, but as a somewhat decent debater as of a few years ago, that's the type of mistake I tend to look for...) ;)<br> <br> My shock was when I took a refresher course on VB at a local community college (I in no way consider myself a programmer... I just fool around with it now and then), and I found that there was a prerequisite of <em>programming logic</em>!&nbsp; (That's something that comes naturally to me, and always has... to think that students need to take a class on how to think!&nbsp; That was a huge shock to me!)<br> <br> Anyway, nice ible.&nbsp; You should consider putting something about binary or how computers work in your title so that people can find it when they search for something similar.&nbsp; :)
You must've been a good debater and that attention to detail would help make you a good programmer. It also shows why I'm not a great programmer. <br><br>I would guess you had a pretty strong math background as did I which probably explains why programming comes naturally to you. VB has always been my language of choice, partly because I mostly taught myself and it was probably the easiest to learn. <br>I don't know if you are aware but Microsoft still has a free version called VB Express.<br>http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-basic-express<br><br>That's what I use for my PC programming. I must warn you it is totally different from VB6. <br><br>Most of my current programming is for the Arduino, also chosen for it's easy learning curve for a Lazy Old Geek.<br><br>LOG<br>
I'm a pretty bad programmer... :'(<br><br>I can do math pretty well, but I really don't like it, which is why I never really got involved in programming. One of the reasons that I took the refresher course was that the college had a agreement with Microsoft that gave the computing students free access for personal use to almost every program and OS Microsoft ever made... so I actually have the full blown version of Visual Studio 2010... but thanks for the link... there's a few people I know that can use it. I never knew about that. :)<br><br>I haven't really learned Arduino yet... my first microcontroller was a Basic Stamp, so I haven't had a chance to learn Arduino yet. I'm hoping that I will have the time to learn it pretty soon. :)

About This Instructable




Bio: Lazy Old Geek
More by msuzuki777:Senior Moments Weather Station 5 IP Time Clock Part 2 
Add instructable to: