280 likes | 288 Views
This tutorial provides an in-depth understanding of computer memory and how information is stored as bits. Learn about logic operations, truth tables, logic gates, memory storage, binary and hexadecimal numbers, and more.
E N D
CMSC 100From the Bottom Up: It's All Just Bits Professor Marie desJardinsTuesday, September 11, 2012 CMSC 100 -- Just Bits
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? Abstraction! CMSC 100 -- Just Bits
Today’s Topics • Logic operations and truth tables • Logic gates and simple circuits • Memory storage • Binary numbers • Conversions • Hexadecimal • Representing other data • Integers (including negative numbers) • Floating point numbers • Characters (ASCII) CMSC 100 -- Just Bits
Logic and Truth Tables CMSC 100 -- Just Bits
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 • 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
Remember Function Tables? CMSC 100 -- Just Bits
Boolean Operations:“Truth Tables” • Negation (NOT): • Conjunction (AND): • Disjunction (OR): Or equivalently… CMSC 100 -- Just Bits
Boolean Expressions • EXERCISE: What would a truth table look like for the expression: (A B) (B C) CMSC 100 -- Just Bits
Boolean Expressions • What would a truth table look like for the expression: (A B) (B C) CMSC 100 -- Just Bits
Boolean Expressions • What would a truth table look like for the expression: (A B) (B C) CMSC 100 -- Just Bits
(Boolean) Algebraic Laws EC • DeMorgan’s Theorem • Analogous to the distributive law in regular algebra • (A B) = A B • (A B) = A B CMSC 100 -- Just Bits
Logic Gates, Circuits, and Memory CMSC 100 -- Just Bits
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) CMSC 100 -- Just Bits
Logic Gates • In hardware, Boolean operations are implemented using circuits called logic gates XOR: Exclusive or (one input is TRUE, but not both) CMSC 100 -- Just Bits
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) CMSC 100 -- Just Bits
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 • Michael Littman's octupus counting video • Low-order or least significant bit == ones place • Next bit would be “10s place” in base 10 -- what about base 2? • High-order bit or most significant bite in a byte == ?? place CMSC 100 -- Just Bits
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?) CMSC 100 -- Just Bits
Scaling Up Memory • Computer chip: • 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 • Each byte has an address (and we use binary numbers to represent those addresses…) • 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
Binary and Hexadecimal Numbers CMSC 100 -- Just Bits
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 • 1112 1110111012 tens place tens place hundreds place ones place ones place twos place QUESTION:What place value does this zero hold? fours place ones place CMSC 100 -- Just Bits
Conversions • Binary decimal: multiply each digit by its place value and add results • Decimal binary: • 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
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 00002 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 CMSC 100 -- Just Bits
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 Abstraction! CMSC 100 -- Just Bits
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:0000000000010111and -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 • This is solved by the twos’ complement representation, but we won’t go over that CMSC 100 -- Just Bits
Floating Point Numbers • Non-integers are a problem… • Remember that any rational number can be represented as a fraction • …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.) • 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 • 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
Representing Characters • ASCII representation: one byte [actually 7 bits…] == one letter == an integer from 0-128 • No specific reason for this assignment of letters to integers! • UNICODE is a popular 16-bit representation that supports accented characters like é [Chart borrowed from ha.ckers.org] CMSC 100 -- Just Bits
Summary: Main Ideas • It’s all just bits • Abstraction • Boolean algebra • TRUE/FALSE • Truth tables • Logic gates • Representing numbers • Hexadecimal representation • Ones’ complement • Floating point numbers (main issues) • ASCII representation (main idea) CMSC 100 -- Just Bits
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 CMSC 100 -- Just Bits