Become a subscriber (Free)

Join 29,000 other subscribers to receive subscriber sale discounts and other free resources.
Don't worry -- your e-mail address is totally secure. I promise to use it only to send you MicroZine.

Bit to byte conversion and hexadecimal thrown in.

Bit to byte conversion : How you can easily convert between bits and bytes without needing a hex/binary calculator and how to use hexadecimal for working with binary numbers.

You can also learn how to translate binary to decimal and back using hexadecimal as a stepping stone between the two number forms.

Using hexadecimal reduces the number of calculations needed to do a bit to byte conversion.

What is a bit ?

A bit is a fundamental number which can have a value of one or zero. It is a binary number.

Computer technology uses voltage to represent binary using voltage levels since it is easy for digital logic to detect a high or low voltage.

On its own a bit is not much use but combine several bits and use a little maths and you have a useful way of representing numbers.

Binary numbers are represented positionally in the same way that normal decimal numbers are represented. Each bit in a byte represents a higher value depending on its position within the byte.

The difference between a bit and a byte is simply that a byte is made up of several bits (there are 8 bits in a byte - in the past a byte could be 5, 6 or even 9 bits long).

What is a number ?

You already know but is is useful to understand the construction of a decimal number so that you can understand binary numbers.

Here's an example: for the number 8362 (decimal - normal).

The digit '2' represents the number of 1's2 * 1

The digit '6' represents the number of 10's6 * 10

The digit '3' represents the number of 100's3 * 100

The digit '8' represents the number of 1000's8 * 1000

Adding all the above up gets back to the original number:

2 + 60 + 300 + 8000 = 8360

As you move to the left the position tells you what multiplier to use for the digit and for decimal it is in powers of 10...

1stdigit from right10 ^ 01

2nddigit from right10 ^ 110

3rddigit from right10 ^ 2100

4thdigit from right10 ^ 31000

The base (or radix) of the decimal system is 10 meaning that there are 10 different symbols used to describe any decimal number:

0 1 2 3 4 5 6 7 8 9

This concept is used to let a computer do mathematics by using the same positional system but using binary, as this is the only language a computer understands!

What is a byte ?

A byte is simply a group of eight bits with the position of each bit determining its contribution to the total value.

Bytes usually have 8 bits with the highest value the left and the lowest value to the right in the same way as a normal decimal number.

Each bit in a byte is normally referred to using its index number:

Bit position bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
Index 7 6 5 4 3 2 1 0

Bit 0 is is the lowest value bit (or LSB - Least Significant Bit) and bit 7 is the highest value bit (or MSB - Most Significant Bit).

Bit to byte conversion: Converting a binary number into a byte the hard way

Bit to byte conversion: for converting a binary number of 8 bits into a byte,

Here's an example using the binary number 10001101

Again the number is represented by position - as you move to the left, the multiplier is increased by a power but this time it is a power of two as the base of the number is 2.

1stdigit from right multiplier2 ^ 0= 1

2nddigit from right multiplier2 ^ 1= 2

3rddigit from right multiplier2 ^ 2= 4

4thdigit from right multiplier2 ^ 3= 8

5thdigit from right multiplier2 ^ 4= 16

6thdigit from right multiplier2 ^ 5= 32

7thdigit from right multiplier2 ^ 6= 64

8thdigit from right multiplier2 ^ 7= 128

So the number is :

1stdigit represents the number of 1's1 * 1

2nddigit represents the number of 2's0 * 2

3rddigit represents the number of 4's1 * 4

4thdigit represents the number of 8's1 * 8

5thdigit represents the number of 16's0 * 16

6thdigit represents the number of 32's0 * 32

7thdigit represents the number of 64's0 * 64

8thdigit represents the number of 128's1 * 128

Adding up all the results gives the number (in decimal)

(128*1) + (64*0) + (32*0)+ (16*0)+ (8*1) + (4*1) + (2*0) + (1*1) =

128 + 8 + 4 + 1 = 141

You can scale up the method for as many binary digits as you need.

So, you can change the 8 bit into a byte fairly easily but see later for a simpler method that uses three calculations not eight.

Byte to bits : converting a byte to binary the hard way

For each bit position you need to figure out if the bit adds to the total value (has a bit value of 1) or does not add to the total (has a bit value of zero).

Starting with the highest bit position value you divide the number by the bit position value. If the result is greater or equal to 1 then it contributes. Here's an example:

If you think of the number 174.

174 / 128= 1.359 : whole part 1- Subtract 127 from 174 leaving 46

46 / 64= 0.718 : whole part 0

46 / 32= 1.438 : whole part 1- Subtract 32 fro 46 leaving 14

14 / 16= 0.875 : whole part 0

14 / 8= 1.750 : whole part 1- subtract 8 from 14 leaving 6

6 / 4= 1.500 : whole part 1- subtract 4 from 6 leaving 2

2 / 2= 1.000 : whole part 1- subtract 2 from 2 leaving 0

0 / 1= 0.000 : whole part 0

So the binary number is 10101110 : you have converted the binary number from a bit into a byte using 16 calculations! (16 if you work as a computer would i.e. do a subtraction for each line regardless of whether the whole number is zero or not).

Again you can scale up the number to as many binary digits as you need.

See later for a simpler method that uses three calculations not 16 for the same bit to byte conversion.

Doing it the easy way

All of that division, multiplication and subtraction is much too much work - imagine having to convert numbers that are 16 bits long 32, even 64 bits long.

Of course easiest way is to use a software calculator program or a calculator that lets you work in hexadecimal or binary and let it do the conversion.

But what if you don't have a calculator (with hex/binary function) or software handy then the following method lets you use an ordinary calculator or even a piece of paper! to do the calculation.

Note you can find a convenient bit to byte (two nibbles) conversion table here.

Bit to byte conversion using hexadecimal.

This method of bit to byte conversion steps around the binary calculation by using hexadecimal as an intermediate step between decimal and binary - you don't need to do a calculation for each bit - it is basically divide and conquer method and you'll probably learn something about number representation as well.

Bit to byte conversion : Converting an 8 bit to a byte using hex.

Taking the example in a previous section : 10001101 binary

Bit to byte conversion of a binary number

Binary Number 10001101
Split into nibbles 1000-1101
Convert to hex 8D
Process 8*16+13 = 141

So instead of doing 8 calculations you do three and you can do these quickly on paper or with a standard calculator.

Basically, to do a bit to byte conversion, you take an 8 bit binary number and form it into groups of 4 bits (nibbles). You then translate each nibble into a hexadecimal number (a 2 hex digit byte) using this table. You then multiply the left digit by 16 and add the result to the first digit.

Hexadecimal is used as it is simple to translate from binary and is convenient when writing it down especially for longer binary numbers.

Note see later for converting larger numbers

Converting a byte to an 8 bit binary using hex.

This is the opposite of the previous bit to byte conversion.

Taking the example in a previous section : 174 decimal

Divide by 16 174/16=10.875
Whole part = left digit 10 (A in hex)
Subtract 16*10 from 174 Leaves 14 (E in hex)
Convert to binary AE = 10101110

So instead of doing 16 calculations you do three and you can do these quickly on paper or with a standard calculator.

Basically you take the number, divide it by 16 and use the whole part as the left digit and use this table to translate it to a hex character (or see the table later on). Subtract 16 times the whole part from the original number giving you the right digit. Translate this to a hex character. Now translate both hex values to binary using the table and you have the final binary result.

Note see later for converting larger numbers

Hexadecimal details

To easily convert binary numbers to decimal you need to use an intermediate number form - hexadecimal. conversion in the intermediate step is done in using hexadecimal. This is a number having base 16 and is closely related to binary as it shares some of the same power values.

binary position value hexadecimal
1st digit 2 ^ 0 = 1 1st hex digit 16 ^ 0 = 1
2nd digit 2 ^ 1 = 2 -
3rd digit 2 ^ 2 = 4 -
4th digit 2 ^ 3 = 8 -
5th digit 2 ^ 4 = 16 2nd hex digit 16 ^ 1 = 16
6th digit 2 ^ 5 = 32 -
7th digit 2 ^ 6 = 64 -
8th digit 2 ^ 7 = 128 -

You can see that there are 2 hex digits for every 8 binary digits. This immediately says that using hexadecimal reduces the number of digits (and therefore the number of calculations needed i.e. its simpler).

Base 16 (or hexadecimal) uses 16 digits to represent a number - in the same way that base 10 (decimal) uses ten digits and base 2 (binary) uses two digits. So what symbols do you use for hexadecimal - well you need six more digits.

I never thought where the name came from before now hex = six ! (I have been using hexadecimal for years)

You could use any symbols you want but the conventional system is to use:

A B C D E F (or lower case - doesn't matter )

So what are the hexadecimal values

Hexadecimal table

Decimal Hex digit Binary code Decimal Hex digit Binary code
0 0 0000 8 8 1000
1 1 0001 9 9 1001
2 2 0010 10 A 1010
3 3 0011 11 B 1011
4 4 0100 12 C 1100
5 5 0101 13 D 1101
6 6 0110 14 E 1110
7 7 0111 15 F 1111

Converting larger numbers

This is basically the same method but scaled up with a simple twist.

All you do is split the 16 bit value into two 8 bit values (with the same calculations as for the 8 bit values). The left value is scaled by 256 and that's it.

An example...

Note the range of 16 bit values is 0-65535 or 0 to (2^16-1) minus one as zero is considered a number.

You could probably scale this up to 32 bits or 64 bits but it's probably time better spent if you buy a calculator/software that can do these calculations.

Converting a 16 bit binary to a decimal using hex.

For the binary value 1111010101101101 binary

This process is nearly the same as the 8 bit conversion but just uses two bit to byte conversions.

Binary Number 1111010101101101
Split into nibbles 1111-0101-0110-1101
Convert to hex F56D
Split left,right F5-6D
Convert each as before 15*16+5=245
and 6*16+13=109
Scale left digit + right 245*256+109
Result 62829

Converting a 16 bit decimal to a binary using hex.

For the decimal value 61049

This process is the opposite of the bit to byte conversion and uses two byte to bit conversion.

Binary Number 61049
Divide by 256 61049/256=238.472
Left digit is the whole part 238
Subtract 238*256 from original 121
left digit 238
right digit 121
Convert as before
238/16 = 14.975 whole = 14 = E (base 16)
238 - 14*16 = 14.0 remainder = 14 = E (base 16)
121/16 = 7.563 whole = 7 = 7 (base 16)
121 - 7*16 =9.0 remainder 9 = 9 (base 16)
Full hex number is EE79
substitute binary 1110-1110-0111-1001
or 1110111001111001

New! Comments

Have your say about what you just read! Leave me a comment in the box below.

Back to the home page from the bit to byte page.

Privacy Policy | Contact | About Me

Site Map | Terms of Use

Visit our Facebook Page:

   Click Here

Recent Articles

  1. The Essential I2C Tutorial: All you need to know about I2C...

    How to use I2C. In this tutorial you will learn all about the 2 wire I2C serial protocol. Learn how easy it is to use, how it works and when to use it...

    Read more

  2. The Easy Guide to RS232.

    What exactly is RS232 and how does it work? - Find out Here!

    Read more

  3. 74HC595: The simplest guide for serial to parallel data output

    This 74HC595 shift register tutorial shows you how to increase outputs for any microcontroller. Learn how to add 8, 16, 32 or more outputs with multiple 595's.

    Read more

Sign up for MicroZine
''The'' Microcontroller Newsletter

Enter your first Name and primary email address in the form below:

And receive absolutely FREE a full project for:

"Measuring Analogue Voltages
Without An ADC"

(Using only one pin).

Instant Download:
You Can
Get It Right Now

Warning: This project could be  Removed 
at any time.  

It will  NOT be 
available indefinitely SO
To avoid 
disappointment  get it:


Don't worry -- your e-mail address is totally secure. I promise to use it only to send you MicroZine
Remember this is a project with full description and fully debugged C Source code - and it's not available from the main website.

You can only get it through this newsletter.

To get exclusive access Enter your first name Name and primary email address Now in the form above.:

But wait !

There's more...

You'll receive more
free and exclusive reports as well as site information and site product updates

Scroll up to the form above and sign up NOW. Don't forget it's FREE and if you don't like it, you can unsubscribe at any time.

Click Here Now to use the form above to get your Valuable information absolutely free.

Readers Comments

"I wanted to thank
you so so so much
for all the information
you have provided in
your site it's


- Ranish Pottath

"This site really is
the best and my favorite.
I find here many useful
projects and tips."

- Milan


"Awesome site,
very, very easy and nice
to navigate!"

- Matt

Learn Microcontrollers

"Interested in

Sign up for The
Free 7 day guide:


"I am a newbie to PIC
and I wanted to say
 how great your
site has been for me."

- Dave


"Your site is a great
and perfect work.

- Suresh


"I couldn't find the correct
words to define
yourweb site.

Very useful, uncovered,
honest and clear.

Thanks so much for
your time and works.

- Anon

Back to Top