Computer Science 101

Download Report

Transcript Computer Science 101

Computer Science 101
Number Systems
Humans

Decimal Numbers (base 10)

Sign-Magnitude (-324)

Decimal Fractions (23.27)

Letters for text
Computers

Binary Numbers (base 2)

Two’s complement and sign-magnitude

Binary fractions and floating point

ASCII codes for characters (A65)
Why binary?

Information is stored in computer via voltage
levels.

Using decimal would require 10 distinct and
reliable levels for each digit.

This is not feasible with reasonable reliability and
financial constraints.

Everything in computer is stored using binary:
numbers, text, programs, pictures, sounds, videos,
...
Morse Code
Morse Code Tree
Decimal: Non-negatives

Base 10

Uses decimal digits: 0,1,2,3,4,5,6,7,8,9

Positional System - position gives power of
the base

Example:
3845 = 3x103 + 8x102 + 4x101 + 5x100

Positions:
…543210
Binary: Non-negatives

Base 2

Uses binary digits (bits): 0,1

Positional system

Example:
1101 = 1x23 + 1x22 + 0x21 + 1x20
Conversions

External
(Human)
25
A
Internal
(Computer)
11001
01000001

Humans want to see and enter numbers in
decimal.

Computers must store and compute with
bits.
Binary to Decimal Conversion

Algorithm:
• Expand binary number using positional
scheme.
• Perform computation using decimal arithmetic.

Example:
110012  1x24 + 1x23 + 0x22 + 0x21 + 1x20
= 24 + 23 + 20
= 16 + 8 + 1
= 2510
Decimal to Binary - Algorithm 1

Algorithm:
While N  0 do
Set N to N/2 (whole part)
Record the remainder (1 or 0)
end-of-loop
Set A to remainders in reverse order
Decimal to binary - Example
Example: Convert 32410 to binary
N
Rem
N Rem
324
162
0
5
0
81
0
2
1
40
1
1
0
20
0
0
1
10
0
 32410 = 1010001002

Decimal to Binary - Algorithm 2

Algorithm:
Set A to 0 (all bits 0)
While N  0 do
Find largest P with 2P  N
Set bit in position P of A to 1
Set N to N - 2P
end-of-loop
Decimal to binary - Example

Example: Convert 32410 to binary
N
Power
P
A
324
68
4
0

256
64
4
32410 = 1010001002
8
6
2
100000000
101000000
101000100
Binary Addition

One bit numbers:
+
0
1
0 | 0
1
1 | 1 10

Example
1111 1
110101 (53)
+ 101101 (45)
1100010 (98)
Overflow

In a given type of computer, the size of
integers is a fixed number of bits.

16 or 32 bits are popular choices

It is possible that addition of two n bit
numbers yields a result requiring n+1 bits.

Overflow is the term for an operation
whose results exceed the size allowed for a
number.
Overflow Example

Suppose we are dealing with 5 bit
numbers; so a number is not allowed to
be more than 5 bits (really restrictive, but
for an example this is fine)
10101 (decimal 21)
10100 (decimal 20)
(1)01001 (decimal 9)
Negatives: Sign-Magnitude system

With a fixed number of bits, say N
• The leftmost bit is used to give the sign
 0 for positive number
 1 for negative number
• The other N-1 bits are for the magnitude

Example: -25 with 8 bit numbers
• Sign: 1 since negative
• Magnitude: 11001 for 25
• 8-bit result: 10011001

Note: This would be 153 as a positive.
Sign-Magnitude: Pros and Cons

Pro:
• Easy to comprehend
• Easy to convert

Con:
• Addition complicated (expensive)
If signs same then
…
else if positive part larger …
• Two representations of 0
Negatives:
Two’s complement system
Same as sign-magnitude for positives
 With N bit numbers, to compute negative

• Invert all the bits
• Add 1

Example: -25 in 8-bit two’s complement
•
25  00011001
• Invert bits: 11100110
• Add 1:
1
11100111
2’s Complement: Pros and Cons

Con:
• Not so easy to comprehend
• Human must convert negative to identify

Pro:
• Addition is exactly same as for positives
No additional hardware for negatives, and
subtraction.
• One representation of 0
2’s Complement: Examples

Compute negative of -25 (8-bits)
•
•
•
•

We found -25 to be 11100111
Invert bits: 00011000
Add 1:
00011001
Recognize this as 25 in binary
Add -25 and 37 (8-bits)
•
11100111 (-25)
+ 00100101 ( 37)
(1)00001100
• Recognize as 12
Facts about 2’s Complement

Leftmost bit still tells whether number is
positive or negative as with
sign-magnitude

2’s complement is same as
sign-magnitude for positives
2’s complement to decimal (examples)

Assume we’re using 8-bit 2’s complement:
• X = 11011001
-X = 00100110 + 1 = 00100111
= 32+4+2+1 = 39 (decimal)
So, X = -39
• X = 01011001
Since X is positive, we have
X = 64+16+8+1 = 89
Ranges for N-bit numbers

Unsigned (positive)

Sign-magnitude

2’s Complement
• 0000…00
or 0
• 1111…11
which is 2N-1
• For N=8, 0 – 255
• 1111…11 which is -(2N-1-1)
• 0111…11 which is 2N-1-1
• For N=8, -127 to 127
• 1000…00 which is -2N-1
• 0111…11 which is 2N-1 - 1
• For N=8, -128 to 127
2’s Complement Overflow Example

Assume we are using 5-bit 2’s
complement numbers
01001 (decimal 9)
01101 (decimal 13)
10110 (decimal -10)
Overflow Example
(Adds and displays sum)
Overflow - Explanation
We had 2147483645 + 2147483645 = -6
 Why?

• 231 -1 = 2147483647 and has 32 bit binary
representation 0111…111. This is largest 2’s
complement 32 bit number.
• 2147483645 would have representation
011111…101.
• When we add this to itself, we get
X = 1111…1010 (overflow)
• So, -X would be 000…0101 + 1 = 00…0110 = 6
• So, X must be -6.
Python and integer overflow
Python – type long

In Python, when whole numbers get too big
for the 32 bits allotted, they are converted
to a type called “long”.

Numbers of this type are allowed to grow
arbitrarily long (restricted by available
memory).

This is handled by software of Python
system.
Python example
Octal Numbers

Base 8
Digits 0,1,2,3,4,5,6,7

Number does not have so many digits as
binary

Easy to convert to and from binary

Often used by people who need to see the
internal representation of data, programs,
etc.
Octal Conversions

Octal to Binary
• Simply convert each octal digit to a three bit
binary number.
• Example:
5368 = 101 011 1102

Binary to Octal
• Starting at right, group into 3 bit sections
• Convert each group to an octal digit
• Example
110111111010102 = 011 011 111 101 010
= 337528
Hexadecimal

Base 16
Digits 0,…,9,A,B,C,D,E,F

Hexadecimal  Binary
• Just like Octal, only use 4 bits per digit.

Example:
98C316 = 1001 1000 1100 00112

Example
110100111010112 = 0011 0100 1110 1011
= 34EB
Python example
Red Green Blue - RGB
In this system colors
are created from the
primary colors Red,
Green and Blue.
 A color is specified by
giving three values in
the range 0-255.
 The first number is the
Red value, the second
is Green and third Blue.

RGB -
Examples
R=212
G=88
B=200
R=240
G=244
B=56
R=150
G=150
B=150
R=255
G=255
B=255
RGB -
In binary
R = 212  11010100
 G = 88  01010100
 B = 200  11001000
 Color stored in 3 eight bit
groups:

R=212
G=88
B=200
11010100 01010100 11001000

Using 24 bits this way, there
would be about 16 million
colors.
RGB 
R=212
G=88
B=200


In hexadecimal
Color stored in 3 eight bit
groups:
11010100 01010100 11001000
Note that each 8 bit group can
be expressed with two hex digits
11010100 is given by D4
01010100 is 54
11001000 is C8
Color given by D454C8 in
hexadecimal
Background Color

We can add a background color to our
web page by adding a BGColor attribute to
the Body tag:
<body bgcolor = “value”>
 The value can be either a “known” color
or a color specified with the 6 hex digit
system.
Background Color (cont.)

There is a long list of “known” colors, but
only 16 that are guaranteed to validate
with all browsers:
aqua, black, blue, fuchsia, gray, green, lime, maroon,
navy, olive, purple, red, silver, teal, white, and yellow

To specify a background color with hex
digits use the form
<body bgcolor = “#D454C8”>
for example