Binary Numbers in C++: Conversion from Decimal to Binary, Study notes of Computer Science

An introduction to binary numbers and explains how to convert integers and fractions from decimal to binary in c++. It includes examples and quick reference tables.

Typology: Study notes

Pre 2010

Uploaded on 02/13/2009

koofers-user-0m4
koofers-user-0m4 🇺🇸

10 documents

1 / 5

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Computer Science 1044 Intro C++ Programming
© 1999 Barnette ND, McQuain WD, Keenan MA
Fall, 1999
Computer Science Dept Va Tech August, 1999 ©1995-1999 Barnette ND, McQuain WD, Keenan MA
1
16. Binary Numbers
Programming in C++
Binary Number System
Base 10 digits: 012345678 9
Base 2 digits: 01
Recall that in base 10, the digits of a number are just coefficients of powers of the base
(10):
417 = 4 * 102+ 1 * 101+ 7 * 100
Similarly, in base 2, the digits of a number are just coefficients of powers of the base (2):
1011 = 1 * 23+0 * 2
2+1 * 2
1+ 1 * 20
Any real number can be represented in any base; humans generally use base 10, but
computer hardware generally uses base 2 representation.
Computer Science Dept Va Tech August, 1999 ©1995-1999 Barnette ND, McQuain WD, Keenan MA
2
16. Binary Numbers
Programming in C++
Converting from Base 10 to Base 2
The base 10 system is also known as the decimal system; base 2 is referred to as binary.
How can we convert an integer from decimal to binary? Here is a simple algorithm:
While N > 0 Do
Write N % 2 // remainder when N is divided by 2
N <-- N / 2 // divide N by 2
Endwhile
Note that the remainder will always be either 0 or 1, a binary digit or bit. The resulting
sequence of bits is the binary representation of the integer N.
See the next slide for an example...
pf3
pf4
pf5

Partial preview of the text

Download Binary Numbers in C++: Conversion from Decimal to Binary and more Study notes Computer Science in PDF only on Docsity!

Computer Science Dept Va Tech August, 1999 ©1995-1999 Barnette ND, McQuain WD, Keenan MA

  1. Binary Numbers 1

Programming in C++

Binary Number System

Base 10 digits: 0 1 2 3 4 5 6 7 8 9 Base 2 digits: 0 1 Recall that in base 10, the digits of a number are just coefficients of powers of the base (10): 417 = 4 * 10 2 + 1 * 10 1 + 7 * 10 0 Similarly, in base 2, the digits of a number are just coefficients of powers of the base (2): 1011 = 1 * 2 3 + 0 * 2 2 + 1 * 2 1 + 1 * 2 0 Any real number can be represented in any base; humans generally use base 10, butcomputer hardware generally uses base 2 representation.

Computer Science Dept Va Tech August, 1999 ©1995-1999 Barnette ND, McQuain WD, Keenan MA

  1. Binary Numbers 2

Converting from Base 10 to Base 2

The base 10 system is also known as the decimal system; base 2 is referred to as binary. How can we convert an integer from decimal to binary? Here is a simple algorithm: While N > 0 Do WriteN <-- N %N (^2) / 2 //// remainderdivide N bywhen 2 N is divided by 2 Endwhile Note that the remainder will always be either 0 or 1, a binary digit or bit. The resultingsequence of bits is the binary representation of the integer N. See the next slide for an example...

Computer Science Dept Va Tech August, 1999 ©1995-1999 Barnette ND, McQuain WD, Keenan MA

  1. Binary Numbers 3

Programming in C++

Converting Integers

Find the binary representation of the decimal integer N = 23:

Integer 23 Remainder

So the decimal integer N = 23 is represented in base 2 as: 10111 Let’s check that: 10111 = 12^4 + 12^2 + 12^1 + 12^0 == 1623 + 4 + 2 + 1 Note: we justshifted frombase 2 to base 10

Computer Science Dept Va Tech August, 1999 ©1995-1999 Barnette ND, McQuain WD, Keenan MA

  1. Binary Numbers 4

Some Quick Tables

Here are some handy facts:

Power of 2 2 -4 Base 2.0001 Base 10.

22 -3 -2^ .001.01 .125.

N 0 Binary 0

Computer Science Dept Va Tech August, 1999 ©1995-1999 Barnette ND, McQuain WD, Keenan MA

  1. Binary Numbers 7

Programming in C++

Converting a General Decimal Number

A general decimal number, like 43.375, would be converted to binary by converting the integer and fractional parts separately (as shown earlier) and combining the results. The decimal integer 43 would be represented in binary as:

The fractional part .375 would be represented in binary as: .

So 43.375 would be represented in binary as: 101011.

Integer Remainder

Carry Fraction

Computer Science Dept Va Tech August, 1999 ©1995-1999 Barnette ND, McQuain WD, Keenan MA

  1. Binary Numbers 8 Of course, many decimal fractions have infinite decimal expansions. The same is true of binary representation, but there are some (perhaps) surprising differences. Consider the decimal fraction 0.1; how would this be represented in binary?

So 0.1 would be represented in binary as: 0.0 0011 0011 0011 0011….

Binary Representation and Precision

Carry Fraction

Clearly, this pattern will nowrepeat forever

Computer Science Dept Va Tech August, 1999 ©1995-1999 Barnette ND, McQuain WD, Keenan MA

  1. Binary Numbers 9

Programming in C++

So 0.1 would be represented exactly in binary as: 0.0 0011 0011 0011 0011…. What would actually be stored in hardware? Suppose that we have a float x = 0.1; float variable: A float is stored in scientific form (but in binary): 0.0 0011 0011 0011 0011…. =(1.1 0011 0011 0011….) * 2 -

The exponent is stored using 7 bits and the fractional part is stored using 23 bits (withtwo bits used for the signs). We cheat and don’t store the first ‘1’, so 0.1 would be stored as: -0000100 +.1 0011 0011 0011 0011 0011 00

Float Representation

That’s -4in binary

Exponent Mantissa (fractional part)

Computer Science Dept Va Tech August, 1999 ©1995-1999 Barnette ND, McQuain WD, Keenan MA

  1. Binary Numbers 10 So 0.1 would be stored in hardware as: -0000100 +.1 0011 0011 0011 0011 0011 00 Converting that to decimal, you have the value: 0. That’s fairly close, but not quite equal to, 0.1. This is called storage error, (or conversion error). This is typical. Most real numbers cannot be stored exactly as floats or even as doubles. Using a double will improve accuracy since a double stores 53 bits for the mantissa, but there will still be some inevitable storage error.

Storage Error