CMSC 100 From the Bottom Up: It's All Just Bits

advertisement
CMSC 100
From the Bottom Up: It's All Just Bits
Professor Marie desJardins
Tuesday, September 11,
2012
CMSC 100 -- Just Bits
1
Tue 9/11/12
Just Bits


Inside the computer, all information is stored as bits

A “bit” is a single unit of information

Each “bit” is set to either zero or one
How do we get complex systems like Google, Matlab, and our cell
phone apps?
2
CMSC 100 -- Just Bits
Tue 9/11/12
Today’s Topics

Logic operations and truth tables

Logic gates and simple circuits



3
Memory storage
Binary numbers

Conversions

Hexadecimal
Representing other data

Integers (including negative numbers)

Floating point numbers

Characters (ASCII)
CMSC 100 -- Just Bits
Tue 9/11/12
Logic and Truth
Tables
CMSC 100 -- Just Bits
4
Tue 9/11/12
Manipulating Bits


What does a bit value “mean”?

0 = FALSE
[off, no]

1 = TRUE
[on, yes]
Just as in regular algebra, we can think of “variables” that represent a single bit

If X is a Boolean variable, then the value of X is either:
 0
[FALSE, off, no] or



5

1
[TRUE, on, yes]
In algebra, we have operations that we can perform on numbers:

Unary operations: Negate, square, square-root, …

Binary operations: Add, subtract, multiply, divide, …
What are the operations you can imagine performing on bits?

Unary: ??

Binary: ??
Thought problem: How many unary operations are there? How many binary operations?
CMSC 100 -- Just Bits
Tue 9/11/12
Remember Function
Tables?
X
X2
X
Y
X+Y
0
0
0
0
0
1
1
0
1
1
2
4
0
2
2
3
9
1
0
1
4
16
1
1
2
…
…
1
2
3
2
0
2
…
…
…
6
CMSC 100 -- Just Bits
Tue 9/11/12
Boolean Operations:
“Truth Tables”


7
Or equivalently…
Negation (NOT): 
X
X
X
X
0
1
F
T
1
0
T
F
Conjunction (AND): 

X
Y
XY
X
Y
XY
0
0
0
F
F
F
0
1
0
F
T
F
1
0
0
T
F
F
1
1
1
T
T
T
CMSC 100 -- Just Bits
Disjunction (OR): 
X
Y
XY
X
Y
XY
0
0
0
F
F
F
0
1
1
F
T
T
1
0
1
T
F
T
1
1
1
T
T
T
Tue 9/11/12
Boolean Expressions

EXERCISE: What would a truth table look like for the expression:
(A  B)  (B  C)
A B
C
AB
B B  C
(A  B)  (B  C)
8
CMSC 100 -- Just Bits
Tue 9/11/12
Boolean Expressions

What would a truth table look like for the expression:
(A  B)  (B  C)
9
CMSC 100 -- Just Bits
A B
C
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1
AB
B B  C
(A  B)  (B  C)
Tue 9/11/12
Boolean Expressions

What would a truth table look like for the expression:
(A  B)  (B  C)
A B
C
AB
B B  C
(A  B)  (B  C)
0
0
0
0
1
1
0
0
0
1
0
1
1
0
0
1
0
1
0
0
0
0
1
1
1
0
1
1
1
0
0
1
1
1
1
1
0
1
1
1
1
1
1
1
0
1
0
0
0
1
1
1
1
0
1
1
10
CMSC 100 -- Just Bits
Tue 9/11/12
(Boolean) Algebraic Laws

DeMorgan’s Theorem

Analogous to the distributive law in regular algebra

(A  B) = A  B

(A  B) = A  B
A
B
A B
(A B)
A
B
A  B
F
F
F
T
T
T
T
F
T
F
T
T
F
T
T
F
F
T
F
T
T
T
T
T
F
F
F
F
11
CMSC 100 -- Just Bits
Tue 9/11/12
Logic Gates,
Circuits, and
Memory
CMSC 100 -- Just Bits
12
Tue 9/11/12
Storing Bits

How are these “bits” stored in the computer?

A bit is just an electrical signal or voltage
(by convention: “low voltage” = 0; “high voltage” = 1)

A circuit called a “flip-flop” can store a single bit


A flip-flop can be “set” (using an electrical signal) to either 0 or 1

The flip-flop will hold that value until it receives a new signal telling it to
change
Bits can be operated on using gates (which “compute” a function of
two or more bits)
13
CMSC 100 -- Just Bits
Tue 9/11/12
Logic Gates

In hardware, Boolean
operations are implemented
using circuits called logic gates
XOR:
Exclusive or
(one input is
TRUE, but
not both)
14
CMSC 100 -- Just Bits
Tue 9/11/12
Logic Circuits

We can implement any logical expression just by assembling the
associated logical gates in the right order

What would a logic circuit look like for the expression:
(A  B)  (B  C)
15
CMSC 100 -- Just Bits
Tue 9/11/12
Storing Information

One bit can’t tell you much… (just 2 possible values)

Usually we group 8 bits together into one “byte”

QUESTION:How many possible values (combinations) are there for one
byte?

A byte can just be thought of as an 8-digit binary (base 2) number


Low-order or least significant bit == ones place


Michael Littman's octupus counting video
Next bit would be “10s place” in base 10 -- what about base 2?
High-order bit or most significant bite in a byte == ?? place
16
CMSC 100 -- Just Bits
Tue 9/11/12
Orders of Magnitude

One 0/1 (“no/yes”) “bit” is the basic unit of memory

Eight (23) bits = one byte

1,024 (210) bytes = one kilobyte (1K)*

1,024K = 1,048,576 (220 bytes) = one megabyte (1M)

1,024K (230 bytes) = one gigabyte (1G)

1,024 (240 bytes) = one terabyte (1T)

1,024 (250 bytes) = one petabyte (1P)

... 280 bytes = one yottabyte (1Y?)
17
CMSC 100 -- Just Bits
Tue 9/11/12
Scaling Up Memory

Computer chip:




Each byte has an address (and we use binary numbers to represent those
addresses…)

18
Many (millions) of circuits
Etched onto a silicon wafer using VLSI (Very Large-Scale Integration) technology
Lots of flip-flops or DRAM devices == memory chip
An address is represented using a word, which is typically either;
 2 bytes (16 bits) -- earliest PCs
 Only 64K combinations  memory is limited to 64K (65,535) bytes!
 4 bytes (32 bits) -- first Pentium chips
 This brings us up to 4G (4,294,967,295) bytes of memory!
 8 bytes (64 bits) -- modern Pentium chips
 Up to 16.8 million terabytes (that’s 18,446,744,073,709,551,615 bytes!)
CMSC 100 -- Just Bits
Tue 9/11/12
Binary and
Hexadecimal
Numbers
CMSC 100 -- Just Bits
19
Tue 9/11/12
Binary Numbers

A binary (base-two) number is just like a decimal (base-ten) number,
except that instead of ten possible digits (0...9), we only have two (0...1)

1510
47710
tens place
ones place

1112
twos place
fours place
tens place
hundreds place ones place
1110111012
QUESTION: What place value does this zero hold?
ones place
20
CMSC 100 -- Just Bits
Tue 9/11/12
Conversions

Binary  decimal: multiply each digit by its place value and add results

Decimal  binary:

21

Find the largest power of two that is less than or equal to the decimal
number

Put a one in that place column in the binary number

Add spaces for the smaller binary digits

E.g., if the largest multiple of two that fits is 256, you would write:
1 __ __ __ __ __ __ __ __

Find the next smallest multiple of two

Put a one in that place column (and a zero in any columns you
skipped)
EXERCISE: You try it!

Write 69710 in binary

Write 110011102 in decimal
CMSC 100 -- Just Bits2
Tue 9/11/12
Hexadecimal

It would be very inconvenient to write
out a 64-bit address in binary:
0010100111010110111110001001011000010001110011011110000011100000

Instead, we group each set of 4 bits
together into a hexadecimal (base 16) digit:

The digits are 0, 1, 2, …, 9, A (10), B (11), …, E (14), F (15)
0010 1001 1101 0110 1111 1000 1001 0110 0001 0001 1100 1101 1110 0000 1110 0000
2
9
D
6
F
8
9
6
1
1
C
D
E
0
E
0

…which we write, by convention, with a “0x” preceding the number to
indicate it’s a heXadecimal number:

0x29D6F89611CDE0E0
22
CMSC 100 -- Just Bits
Tue 9/11/12
Representing Information

Positive integers: Just use the binary number system

Negative integers, letters, images, … not so easy!

There are many different ways to represent information

Some are more efficient than others

… but once we’ve solved the representation problem, we can use that
information without considering how it’s represented… via
23
CMSC 100 -- Just Bits
Tue 9/11/12
Representing Integers

Simplest idea (“ones’ complement”):

Use one bit for a “sign bit”:

1 means negative, 0 means positive

The other bits are “complemented” (flipped) in a negative number

So, for example, +23 (in a 16-bit word) is represented as:
0000000000010111
and -23 is represented as:
1111111111101000

But there are two different ways to say “zero” (0000… and 1111…)

It’s tricky to do simple arithmetic operations like addition in the ones’
complement notation

24
CMSC 100 -- Just Bits
This is solved by the twos’ complement representation, but we won’t go
over that
Tue 9/11/12
Floating Point Numbers


Non-integers are a problem…
Remember that any rational number can be represented as a fraction



Irrational numbers can’t be written down at all, of course
Notice that any representation we choose will by definition have limited
precision, since we can only represent 232 different values in a 32-bit word



25
…but we probably don’t want to do this, since
 (a) we’d need to use two words for each number (i.e., the numerator and the
denominator)
 (b) fractions are hard to manipulate (add, subtract, etc.)
1/3 isn’t exactly 1/3 (let’s try it on a calculator!)
In general, we also lose precision (introduce errors) when we operate on
floating point numbers
You don’t need to know the details of how “floating point” numbers are
represented
CMSC 100 -- Just Bits
Tue 9/11/12
Representing Characters

ASCII representation: one byte [actually 7 bits…] == one letter ==
an integer from 0-128
26
CMSC 100 -- Just Bits
[Chart borrowed from ha.ckers.org]
Tue 9/11/12
Summary: Main Ideas



It’s all just bits
Abstraction
Boolean algebra




Representing numbers




TRUE/FALSE
Truth tables
Logic gates
Hexadecimal representation
Ones’ complement
Floating point numbers (main issues)
ASCII representation (main idea)
27
CMSC 100 -- Just Bits
Tue 9/11/12
ACTIVITY (if time)


Design a one-bit adder (i.e., a logic circuit that adds two
1-bit numbers together)
X + Y  Z2 Z1

Z2 is needed since the result may be two binary digits long
First let’s figure out the Boolean expression for each output…



Create the truth table
Then we’ll draw the logic circuit
28
CMSC 100 -- Just Bits
Tue 9/11/12
Download