please dont rip this site

Bytes, Bits and Nibbles

Copyright 2000 G. Shearer

To begin with, a microcontroller really only understands the presence or absence of a voltage. TTL (transistor to transistor logic) specifications consider voltages >1.4 Volts to represents a 1 and voltages <1.4 Volts are considered as a 0. In practice, when the microcontroller detects a voltage above the specified level, it considers this to be a 1. The absence of voltage is considered by the microcontroller to be a 0. Other terms such as: true, set, on and high also refer to the 1 condition. Terms such as: false, clear, off and low refer to the 0 condition. In most cases, these words can be used interchangeably to mean the same thing. Counting to 1 will not get you very far in controlling other devices. You could settle for a wall switch to do that job. We will need to expand a bit on this principle in order to do much of anything.

When we count 1, 2, 3, 4, 5, 6, 7, 8, 9 we are using the base 10 system, often referred to as decimal. Now, if we only had 1 and 0 to count with, we would have to count 1, 10, 11, 100, 101, 110, 111, 1000 I think you get the picture. When we count in this manner, we are using the base 2 or binary system. This is a system that our microcontroller has no problem understanding. Back in the base 10 system, we have 1s place, 10s place, 100s place and so on. In the binary system, we have 1s place, 2s place, 4s place, 8s place and so on. A quick way to convert back to base 10 would be to add the values of all the places in a binary number which are occupied by a 1. For example, the binary number 1010 would be 8+2=10. Each of these binary places is called a bit. A bit could be electrically represented as a wire, terminal or pin on a chip which either has a voltage present on it or has no voltage present, representing a 1 or a 0.

With enough bits, you can count to or represent quite a large number. Notice also that each time we add another place, we double the highest number we can represent. If we have 8 bits representing our numbers we have what is called a byte. With a byte, we can count from 0 to 255. By manipulating bytes, we can do mathematics with the largest numbers we need to work with. You can also see that our microcontroller will need to do more manipulation the larger the numbers we wish to work with. If 8 bits is a byte, then it only makes sense that half a byte or 4 bits would be called a nibble. At least it makes perfect sense to anyone who speaks fluent English.

If we have a nibble to work with, our 4 bits enable us to count from 0 to 15. Wouldnt it be lovely to be able to count from 0 to 15 with just single place numbers? We can do that if we use the base 16 system, also called hexadecimal or just hex for short. Counting in hex would be 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10 I think you understand. The place conversion trick I showed you earlier with binary also works with hex if you use 1s place, 16s place, 32s place however this time you must multiply the value in each place by the place value then add the results together to obtain the decimal value.

So, what good is hex anyway? Well, you can represent an entire nibble with just one place. You can also represent an entire byte (2 nibbles) with just 2 places. Last, but not least, this is the final form your program will take before you ship it off to the microcontroller by marching all the bits, representing the hex values, out of your PC like little soldiers in single file (serial) fashion. Before you download your program to the microcontroller, it will need to be in the hex format. When the JAL compiler compiles your source code, it will create two files. One file will have the .asm extension and the other will have the .hex extension. The latter will be the one you will need to specify when you select the file to be programmed into the microcontroller.

I have included this little chart below that you might find handy to refer to until you memorize exactly what a value in each base would be. If you use the calculator program in Windows, you will discover that it provides an easy method for converting between the different bases.


Decimal Hex Binary


















































file: /Techref/piclist/jal/bitsandbytes.htm, 10KB, , updated: 2011/11/1 18:27, local time: 2017/10/19 19:06,

 ©2017 These pages are served without commercial sponsorship. (No popup ads, etc...).Bandwidth abuse increases hosting cost forcing sponsorship or shutdown. This server aggressively defends against automated copying for any reason including offline viewing, duplication, etc... Please respect this requirement and DO NOT RIP THIS SITE. Questions?
Please DO link to this page! Digg it! / MAKE! / 

<A HREF=""> Bytes, Bits and Nibbles</A>

After you find an appropriate page, you are invited to your to this massmind site! (posts will be visible only to you before review) Just type in the box and press the Post button. (HTML welcomed, but not the <A tag: Instead, use the link box to link to another page. A tutorial is available Members can login to post directly, become page editors, and be credited for their posts.

Link? Put it here: 
if you want a response, please enter your email address: 
Attn spammers: All posts are reviewed before being made visible to anyone other than the poster.
Did you find what you needed?

  PICList 2017 contributors:
o List host: MIT, Site host, Top posters @20171019 RussellMc, Van Horn, David, James Cameron, Sean Breheny, IVP, alan.b.pearce, Neil, David C Brown, Bob Blick, Denny Esterline,
* Page Editors: James Newton, David Cary, and YOU!
* Roman Black of Black Robotics donates from sales of Linistep stepper controller kits.
* Ashley Roll of Digital Nemesis donates from sales of RCL-1 RS232 to TTL converters.
* Monthly Subscribers: Gregg Rew. on-going support is MOST appreciated!
* Contributors: Richard Seriani, Sr.

Welcome to!