Transcript ppt
Computer Science 1000
Digital Information
What is a number?
An arithmetical value, expressed by a word,
symbol, or figure, representing a particular
quantity – Oxford English Dictionary
in other words, a number has two
components:
quantity: the "amount"
representation: how that amount is represented
Number – Example
consider the following quantity of people
how can we represent this number in print?
7
the word seven
VII (Roman Numerals)
(tally marks)
Number
the point is, there is
more than one way to
represent the same
quantity
the choice depends
largely on the
application
Decimal Number System
also referred to as base 10
a widely used number system, and probably
the one you are used to
each number is represented as a sequence
of digits: 0 1 2 3 4 5 6 7 8 9
the quantity of people from the previous
slide is represented as: 7
Decimal Number System
why is decimal so widely used?
From: A Manual of Greek Mathematics
By Thomas Little Heath
Binary Number System
also referred to as base 2
the system that computers use to store
numbers
each number is represented as a sequence
of digits: 0 1
the quantity of people from the previous
slide is represented as: 111
Binary Number System
why do computers use a binary number
system?
most electronic storage has two states: on/off
RAM: capacitor charged or not charged
HD: polarity of magnetic field
processor: open/closed switch
difficult to store information reliably in more than
two states
quantum computers are an exception
Binary Numbers
our upcoming discussion will be to
familiarize you with the binary number
system (plus a few others)
for this discussion, we will assume that our
quantities are:
positive
integral (no fractions)
we will relax these assumptions later on
Binary Number
any positive, integral quantity that can be
represented in decimal can also be represented in
binary
Dec
Bin
Dec
Bin
Dec
Bin
Dec
Bin
0
0
4
100
8
1000
12
1100
1
1
5
101
9
1001
13
1101
2
10
6
110
10
1010
14
1110
3
11
7
111
11
1011
15
1111
the rules for representation are very similar in both
systems
Decimal Numbers
what does base 10 really mean?
each digit in the number represents a quantity to
be multiplied by a power of 10
these values are all summed together
for example, consider the number 1234
1234
= 1 x 1000
+ 2 x 100
+ 3 x 10
+4x1
= 1 x 103
+ 2 x 102
+ 3 x 101
+ 4 x 100
Leading Zeroes
suppose I wanted to write 1234 using 5 digits
what is the correct representation?
Answer: 01234
these are known as leading zeroes
they do not affect the quantity, as their power of 10 is
multiplied by zero
in decimal, leading zeroes are typically not reported
for binary applications like computing, leading zeroes are
often shown
Binary Numbers
the digits in base 2 represent a similar idea as in
decimal
each digit represents a value to be multiplied to a power
however, instead of multiplying to a power of 10, they are
multiplied to a power of 2
for example, consider the binary number 1101
1101
=1x
+1x
+0x
+1x
8
4
2
1
= 1 x 23
+ 1 x 22
+ 0 x 21
+ 1 x 20
In other words, the
number 1101 in
binary is the
number 13 in
decimal.
Binary Conversion to Decimal:
for each binary digit:
copy the digits vertically on its own line
multiply each digit by a power of two
I typically write the left-most digit on the top, and the
right-most digit on the bottom
bottom digit: 20 = 1
increase by one power for each vertical step
add all values together
Binary Conversion to Decimal:
example: convert 11001 to decimal
Step 1: Write the values vertically
1
1
0
0
1
Binary Conversion to Decimal:
example: convert 11001 to decimal
Step 2: Multiply each value by a power of 2
1 x 24 = 1 x 16 = 16
1 x 23 = 1 x 8 = 8
0 x 22 = 0 x 4 = 0
0 x 21 = 0 x 2 = 0
1 x 20 = 1 x 1 = 1
Binary Conversion to Decimal:
example: convert 11001 to decimal
Step 3: Add numbers together
1 x 24 = 1 x 16 = 16
1 x 23 = 1 x 8 = 8
0 x 22 = 0 x 4 = 0
0 x 21 = 0 x 2 = 0
1 x 20 = 1 x 1 = 1
Decimal:
25
Binary Conversion to Decimal:
Example 2: Recall that letters are
represented in the computer using numbers.
The ASCII value for 'K' is 1001011 in binary.
What is this number in decimal?
Binary Conversion to Decimal:
1 x 26 = 1 x 16 = 64
0 x 25 = 0 x 16 = 0
0 x 24 = 0 x 16 = 0
1 x 23 = 1 x 8 = 8
0 x 22 = 0 x 4 = 0
1 x 21 = 1 x 2 = 2
1 x 20 = 1 x 1 = 1
Decimal:
75
http://jeroenstaneke.girlshopes.com/binarytoascii/
Converting Decimal to Binary
converting from decimal to binary is
straightforward
converting to binary from decimal is a bit
more involved
however, it is easily accomplished if you
follow the steps
Converting Decimal to Binary – Steps
To convert number X to binary
Repeat following steps until X = 0
if X is odd, then write a one
Write right-to-left
if X is even, then write a zero
divide X by 2, and ignore any remainder or fraction
Example: Convert the number 19 to binary
Repeat following steps until X = 0
X = 19 9
if X is odd, then write a one
if X is even, then write a zero
divide X by 2, and ignore any
remainder or fraction
since 19 is odd, we write a one
we then divide 19 by 2 to get 9.5
since we ignore the fraction, our new
number is 9
Result:
1
Remember: Write right-to-left
Example: Convert the number 19 to binary
Repeat following steps until X = 0
X = 19 9 4
if X is odd, then write a one
if X is even, then write a zero
divide X by 2, and ignore any
remainder or fraction
since 9 is odd, we write a one
we then divide 9 by 2 to get 4.5
since we ignore the fraction, our new
number is 4
Result:
11
Remember: Write right-to-left
Example: Convert the number 19 to binary
Repeat following steps until X = 0
X = 19 9 4 2
if X is odd, then write a one
if X is even, then write a zero
divide X by 2, and ignore any
remainder or fraction
since 4 is even, we write a zero
we then divide 4 by 2 to get 2
since there is no fraction, our new
number is 4
Result:
0 11
Remember: Write right-to-left
Example: Convert the number 19 to binary
Repeat following steps until X = 0
X = 19 9 4 2 1
if X is odd, then write a one
if X is even, then write a zero
divide X by 2, and ignore any
remainder or fraction
since 2 is even, we write a zero
we then divide 2 by 2 to get 1
since there is no fraction, our new
number is 1
Result:
0 0 11
Remember: Write right-to-left
Example: Convert the number 19 to binary
Repeat following steps until X = 0
X = 19 9 4 2 1 0
if X is odd, then write a one
if X is even, then write a zero
divide X by 2, and ignore any
remainder or fraction
since 1 is odd, we write a one
we then divide 1 by 2 to get 0.5
since we ignore the fraction, our new
number is 0
Result:
1 0 0 11
Remember: Write right-to-left
Example: Convert the number 19 to binary
Repeat following steps until X = 0
X = 19 9 4 2 1 0
Since X is now
zero, we are done.
Hence, 19 as a
binary number is
10011
if X is odd, then write a one
if X is even, then write a zero
divide X by 2, and ignore any
remainder or fraction
since 1 is odd, we write a one
we then divide 1 by 2 to get 0.5
since we ignore the fraction, our new
number is 0
Result:
1 0 0 11
Remember: Write right-to-left
Example: Convert the number 19 to binary
check your work: convert 10011 back to decimal
1 x 24 = 1 x 16 = 16
0 x 23 = 0 x 8 = 0
0 x 22 = 0 x 4 = 0
1 x 21 = 1 x 2 = 2
1 x 20 = 1 x 1 = 1
Decimal:
19
Result checks out.
Example 2: Convert the number 53 to binary
X = 53 26 13 6 3 1 0
Result:
1 x 25 = 1 x 32 = 32
1 x 24 = 1 x 16 = 16
0 x 23 = 0 x 8 = 0
1 x 22 = 0 x 4 = 4
0 x 21 = 1 x 2 = 0
1 x 20 = 1 x 1 = 1
Decimal:
53
110101
Result checks out.
Decimal to Binary – An Alternative Approach
the steps for converting from decimal to binary can
also be written as follows:
Repeat following steps until X = 0
the two approaches are equivalent, since:
divide X by 2
assign the remainder digit to result
if X is odd, then dividing by 2 produces a remainder of 1
if X is even, then dividing by 2 produces a remainder of 0
you are welcome to use either method in your lab
Other Bases
most people use base 10 encodings
computers use base 2 encodings
however, there are two other popular encodings,
particularly in computer science
octal – base 8
hexadecimal (hex) – base-16
we can extend our previous statement about binary
and decimal representations to:
any positive, integral quantity that can be represented in
decimal can also be represented in binary, octal, or hex
Octal Number System
also referred to as base 8
octal numbers have special uses
older computers
file permissions (shown later)
each number is represented as a sequence
of digits: 0 1 2 3 4 5 6 7
the quantity of people, in octal: 7
Octal Numbers
the digits in base 8 represent powers of 8
for example, consider the octal number 3624
3624
= 3 x 512
+ 6 x 64
+2x 8
+4x 1
= 3 x 83
+ 6 x 82
+ 2 x 81
+ 4 x 80
Octal Conversion to Decimal:
example: convert 3624 to decimal
use our binary converter, but use powers of 8
3 x 83 = 3 x 512
6 x 82 = 6 x 64
2 x 81 = 2 x
8
4 x 80 = 4 x
1
Decimal:
= 1536
= 384
= 16
=
4
1940
Decimal Conversion to Octal
can modify our decimal to binary converter to get
octal
however, we typically are more interested in
converting octal numbers to binary
it turns out, it is really easy to convert octal
numbers to binary
if one then desires the decimal representation:
convert the decimal to binary
convert binary to octal
Octal to Binary
for starters, let's consider the single-digit
octal numbers, written in binary
note that we will use leading zeroes, so that
they are all three binary digits long
Octal
Bin
Octal
Bin
0
000
4
100
1
001
5
101
2
010
6
110
3
011
7
111
Octal to Binary
Bin
Octal
Bin
0
000
4
100
1
001
5
101
2
010
6
110
3
011
7
111
the binary representation for the octal
number 467 is:
Octal
100110111
notice anything?
each group of three digits in the binary number
make up an octal digit
i.e. 100110111 = 100 110 111 = 467
Converting Octal to Binary – Steps
To convert octal number X to binary
Repeat for each octal digit, left to right
write the three binary digits that correspond to the octal
digit
If desired, remove any leading zeroes from the
result
Octal
Bin
Octal
Bin
0
000
4
100
1
001
5
101
2
010
6
110
3
011
7
111
Converting Octal to Binary
example: convert octal 7234 to binary
Solution: 111010011100
111
010
011
100
7
2
3
4
Octal
Bin
Octal
Bin
0
000
4
100
1
001
5
101
2
010
6
110
3
011
7
111
Converting Octal to Binary
example: convert octal 1762 to binary
Solution: 001111110010
1111110010
(no leading zeroes)
001
111
110
010
1
7
6
2
Converting Octal to Binary – Steps
To convert binary number X to octal
For each group of three digits in X (right to left)
write the corresponding octal digit from our table (right to
left)
if the number of binary digits remaining is 1 or 2, then add
leading zeroes to make three digits
Octal
Bin
Octal
Bin
0
000
4
100
1
001
5
101
2
010
6
110
3
011
7
111
Converting Binary to Octal
example: convert binary 111010011100
Solution: 7234
7
2
3
4
111
010
011
100
Octal
Bin
Octal
Bin
0
000
4
100
1
001
5
101
2
010
6
110
3
011
7
111
Converting Binary to Octal
example: convert binary 1111110010
Solution: 1762
1
7
6
2
0011
111
110
010
add leading zeroes
Octal – Uses
one common place where octal numbers are used are for file
permissions in a Linux system
briefly stated, there are three types of file permissions
read: a user can read the contents of a file
write: a user can save contents to the file
execute: a user can execute (run) the file
there are three types of users:
the owner of the file
people in the owner's group
everyone else
Octal – Uses
permissions in files are either yes/no (binary)
hence, we can represent all possible permissions with 9
binary bits
first bit: does the owner of the file have read permission
second bit: does the owner of the file have write permission
third bit: does the owner of the file have execute permission
fourth bit: does the owner's group have read permission
fifth bit: does the owner's group have write permission
sixth bit does the owner's group have execute permission
seventh bit: does everyone have read permission
eighth bit: does everyone have write permission
ninth bit: does everyone have execute permission
Octal
Bin
Octal
Bin
0
000
4
100
1
001
5
101
2
010
6
110
3
011
7
111
Octal – Uses
we can represent these 9 bits using three octal
digits
first digit: user permissions
second digit: group permissions
third digit: everyone else's permissions
e.g. suppose that a file has permissions: 750
in binary: 111 101 000
file owner has all permissions
owner's group has read and execute permission
everyone else has no permission
Hex Number System
also referred to as base 16
hex numbers have special uses
memory addresses
colours
like our other systems (decimal, binary,
octal), represented as a sequence of digits
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ....
what are the other digits?
Hex Number System
hex uses the letters A to F to represent its remaining 6 digits:
10 in decimal is A in hex
11 in decimal is B in hex
12 in decimal is C in hex
13 in decimal is D in hex
14 in decimal is E in hex
15 in decimal is F in hex
e.g. 4E7F represents a hexidecimal number
note that some people write hex in lower case (4e7f)
the quantity of people, in hex: 7
Hex Numbers
the digits in base 16 represent powers of 16
for example, consider the hex number 4E7F
4E7F
= 4 x 163
+ E x 162
+ 7 x 161
+ F x 160
= 4 x 4096
+ 14 x 256
+ 7 x 16
+ 15 x 1
Hex Conversion to Decimal:
example: convert 4E7F to decimal
use our binary converter, but use powers of 16
4 x 163 = 4 x 4096 = 16384
E x 162 = 14 x 256 =
3584
7 x 161 = 7 x
16 = 112
F x 160 = 15 x
1 =
15
Decimal:
20095
Decimal Conversion to Hex
can modify our decimal to hex converter to get octal
like octal numbers, we typically convert between
hex and binary
like octal, it is really easy to convert hex numbers to
binary
Hex to Binary
like octal, we can write all digits of hex using
a fixed sequence of 4 binary digits
leading zeroes are used when necessary
Hex
Bin
Hex
Bin
Hex
Bin
Hex
Bin
0
0000
4
0100
8
1000
C
1100
1
0001
5
0101
9
1001
D
1101
2
0010
6
0110
A
1010
E
1110
3
0011
7
0111
B
1011
F
1111
Hex
Bin
Hex
Bin
Hex
Bin
Hex
Bin
0
0000
4
0100
8
1000
C
1100
1
0001
5
0101
9
1001
D
1101
2
0010
6
0110
A
1010
E
1110
3
0011
7
0111
B
1011
F
1111
Hex to Binary
the binary representation for the hex
number 8B7 is:
100010110111
similar to octal:
each group of four digits in the binary number
make up a hex digit
i.e. 100010110111 = 1000 1011 0111 = 8B7
Converting Hex to Binary – Steps
To convert hex number X to binary
Repeat for each digit, left to right
write the four binary digits that correspond to the hex digit
If desired, remove any leading zeroes from the
result
Hex
Bin
Hex
Bin
Hex
Bin
Hex
Bin
0
0000
4
0100
8
1000
C
1100
1
0001
5
0101
9
1001
D
1101
2
0010
6
0110
A
1010
E
1110
3
0011
7
0111
B
1011
F
1111
Converting Hex to Binary
example: convert hex C234 to binary
Solution: 1100001000110100
1100 0010
C
2
0011 0100
3
4
Hex
Bin
Hex
Bin
Hex
Bin
Hex
Bin
0
0000
4
0100
8
1000
C
1100
1
0001
5
0101
9
1001
D
1101
2
0010
6
0110
A
1010
E
1110
3
0011
7
0111
B
1011
F
1111
Converting Hex to Binary
example: convert hex 3762 to binary
Solution: 0011011101100010
11011101100010
0011 0111
3
7
(no leading zeroes)
0110 0010
6
2
Converting Hex to Binary – Steps
To convert binary number X to hex
For each group of four digits in X (right to left)
write the corresponding hex digit from our table (right to
left)
if the number of binary digits remaining is 1, 2, or 3, then
add leading zeroes to make four digits
Hex
Bin
Hex
Bin
Hex
Bin
Hex
Bin
0
0000
4
0100
8
1000
C
1100
1
0001
5
0101
9
1001
D
1101
2
0010
6
0110
A
1010
E
1110
3
0011
7
0111
B
1011
F
1111
Converting Binary to Hex
example: convert binary 1100001000110100
Solution: C234
C
2
1100 0010
3
4
0011 0100
Hex
Bin
Hex
Bin
Hex
Bin
Hex
Bin
0
0000
4
0100
8
1000
C
1100
1
0001
5
0101
9
1001
D
1101
2
0010
6
0110
A
1010
E
1110
3
0011
7
0111
B
1011
F
1111
Converting Binary to Hex
example: convert binary 11011101100010
Solution: 3762
3
7
11 0111
0011
add leading zeroes
6
2
0110 0010
Hex – Uses
recall that each byte in memory has an address (like a
mailbox number)
these numbers are typically listed using hexidecimal
e.g. from a Microsoft tutorial on address space
Hex – Uses
another common use of hex numbers are to
represent colours
recall our discussion about colour models, in
particular, the RGB (Red-Green-Blue) model
a copy of the relevant slide from the Terminology III
slides has been included here, for convenience
From the
term3.ppt slides
(Week 2).
Colour Model
the colours defined by each series of bits depends on the
colour model
example: RGB (red-green-blue)
each colour is made up of a combination of red, green, and blue
the intensity of each channel determines the colour that we see
examples:
no red, no green, no blue = black
full red, no green, no blue = red
full red, full green, no blue = yellow
full red, no green, full blue = magenta
full red, full green, full blue = white
half red, no green, no blue = darker red
Colour Model
in a 24-bit scheme, the intensity of each colour is
governed by a value between 0 and 255
0 = no colour
255 = full colour
128 = half colour
examples:
red = 0, green = 0, blue = 0 black
red = 255, green = 0, blue = 0 red
red = 255, green = 255, blue = 0 yellow
red =255, green = 0, blue = 255 magenta
red = 255, green = 255, blue = 255 white
red = 128, green = 0, blue = 0 dark red
red = 255, green = 128, blue = 0 orange
Colour Model – why 0-255?
recall that each colour is represented using 24
bits
each channel is given 8 bits
as it turns out
the smallest 8-bit number: 00000000 = 0
the largest 8-bit number: 11111111 = 255
e.g. consider our example of orange:
red = 255, green = 128, blue = 0
converting to binary:
red = 11111111, green = 10000000, blue = 00000000
hence, orange in 24-bit binary = 111111111000000000000000
Colour Model
what is desired is to specify a colour using a single
value, rather than 3
specifying the binary is too long, and error prone
what about decimal?
the previous 24-bit binary number can be converted to
decimal:
111111111000000000000000 = 16744448
would you remember that this number means orange?
Hex to the Rescue
as we've shown, each digit in hexadecimal
represents four bits in binary
hence, we can represent our colours using 6 hex
digits
first two digits: red channel
next two digits: green channel
last two digits: blue channel
each channel is a hex number between 00 and FF
FF in hex = 255 in decimal
Hex
Bin
Hex
Bin
Hex
Bin
Hex
Bin
0
0000
4
0100
8
1000
C
1100
1
0001
5
0101
9
1001
D
1101
2
0010
6
0110
A
1010
E
1110
3
0011
7
0111
B
1011
F
1111
Hex Colours
represent our number for orange in
hexadecimal
binary: 111111111000000000000000
with spaces: 1111 1111 1000 0000 0000 0000
as hex: FF8000
where are hex colours used?
imaging applications
webpages
From the colour selector in GIMP:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Nested Elements</title>
</head>
<body style="background-color: yellow">
<h1 style="background-color: orange"> Heading </h1>
<p>This is a paragraph. </p>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Nested Elements</title>
</head>
<body style="background-color: #FF0000">
<h1 style="background-color: #FF8000"> Heading </h1>
<p>This is a paragraph. </p>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Nested Elements</title>
</head>
<body style="background-color: #80FF00">
<h1 style="background-color: #880088"> Heading </h1>
<p>This is a paragraph. </p>
</body>
</html>
Base Notation
consider the number 101
this could be a hex number, decimal number, octal
number or binary number, each with different
values
to differentiate:
some people will write a subscript to indicate the base
e.g. 1012 indicates binary, while 10110 indicates decimal
in computer science:
octal numbers are often indicated by a leading 0
hex numbers are often indicated by a leading 0x
Number Sizes
consider a common personal calculator
non-scientific
no exponents
what is the biggest number that we can
store?
Number Sizes
Answer: depends on the number of digits
1 digit: 9
2 digits: 99
3 digits: 999
4 digits: 9999
and so on
Number Sizes
we can generalize the previous by noticing the
following:
1 digit: 9 = 10-1 = 101-1
2 digits: 99 = 100-1 = 102-1
3 digits: 999 = 1000-1 = 103-1
4 digits: 9999 = 10000-1 = 104–1
...
in other words: given x digits, the largest number
that we can represent is 10x - 1
Number Sizes
given a calculator again, what's the smallest
number we can store?
same assumptions as before
no negatives
Answer: 0
note: leading blanks are
the same as zeroes
Number Sizes
in summary, given x digits, we can represent any
number between 0 and 10x - 1
e.g. given 4 digits, we can represent any number between
0 and 9999
equivalently, the number of unique numbers
that we can represent using x digits is 10x
e.g. given two digits, we can represent 100
different numbers: 00, 01, 02, 03, ..., 97, 98, 99
Number Sizes
the same statements can be applied to
numbers in other bases
given x binary digits, we can represent any
number between 0 and 2x - 1
equivalently, the number of unique numbers that
we can represent using x binary digits is 2x
Number Sizes – Example:
suppose I have exactly four binary digits
what is the largest number I can represent?
what is the smallest number I can represent?
24 - 1 = 15 (1111)
0 (0000)
how many different numbers can I store?
24 = 16
Dec
Bin
Dec
Bin
Dec
Bin
Dec
Bin
0
0000
4
0100
8
1000
12
1100
1
0001
5
0101
9
1001
13
1101
2
0010
6
0110
10
1010
14
1110
3
0011
7
0111
11
1011
15
1111
Number Sizes – Applications
consider our 24-bit colour model
how many unique colours can we
represent?
Answer:
the number of unique numbers that we can
represent using x binary digits is 2x
hence, the number of unique colours = 224 =
16777216
Number Sizes – Applications
public-key cryptography uses secret keys to encrypt and
decrypt information as it passes between two parties
briefly stated, in order to read your incoming information, an
eavesdropper would have to obtain your key somehow
suppose your key was a 256-bit number (common)
how many possible keys are there?
the number of unique numbers that we can represent using x binary
digits is 2x
hence, the number of possible keys is: 2256
=115792089237316195423570985008687907853269984665640564039
457584007913129639936 ( roughly 1.15 x 1077)
for reference, one estimate on the number of atoms in the observable
universe = 4 x 1079