Survey							
                            
		                
		                * Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Binary Numbers Why Binary?    Maximal distinction among values  minimal corruption from noise Imagine taking the same physical attribute of a circuit, e.g. a voltage lying between 0 and 5 volts, to represent a number The overall range can be divided into any number of regions Don’t sweat the small stuff   For decimal numbers, fluctuations must be less than 0.25 volts For binary numbers, fluctuations must be less than 1.25 volts 5 volts 0 volts Decimal Binary It doesn’t matter ….     Recall the power supply voltage measurements from lab 1 Ideally they should be 5.00 volts and 12.00 volts Typically they were 5.14 volts or 12.22 volts So what, who cares How to represent big integers    Use positional weighting, same as with decimal numbers 205 = 2102 + 0101 + 5100 11001101 = 127 + 126 + 025 + 024 + 123 + 122 + 021 + 120 = 128 + 64 + 8 + 4 + 1 = 205 Converting 205 to Binary  205/2 = 102 with a remainder of 1, place the 1 in the least significant digit position 1  Repeat 102/2 = 51, remainder 0 0 1 Iterate  51/2 = 25, remainder 1 1  1 0 1 0 1 25/2 = 12, remainder 1 1  0 1 12/2 = 6, remainder 0 0 1 1 Iterate  6/2 = 3, remainder 0 0  1 1 0 1 0 1 0 1 3/2 = 1, remainder 1 1  0 0 0 1 1 1/2 = 0, remainder 1 1 1 0 0 1 1 Recap 1 1 0 0 1 1 127 + 126 + 025 + 024 + 123 + 122 + 021 + 120 205 0 1 Adding Binary Numbers  Same as decimal; if sum of digits in a given position exceeds the base (10 for decimal, 2 for binary) then there is a carry into the next higher position + 1 3 3 7 9 5 4 Adding Binary Numbers 1 + 1 1 1 0 1 0 0 1 1 1 0 1 0 0 0 1 1 1 0 0 1 0 1 0 Uh oh, overflow  What if you use a byte (8 bits) to represent an integer 1 1  1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 0 1 1 1 0 1 1 0 A byte may not be enough to represent the sum of two such numbers Bigger Numbers   You can represent larger numbers by using more words You just have to keep track of the overflows to know how the lower numbers (less significant words) are affecting the larger numbers (more significant words) Negative numbers  Negative x is that number when added to x gives zero 1 1  1 1 1 1 1 1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 Ignoring overflow the two eight-bit numbers above sum to zero Two’s Complement 0  1 0 1 0 1 0 Step 1: exchange 1’s and 0’s 1  0 1 0 1 0 1 0 1 0 1 1 0 Step 2: add 1 1 1 0 1 Riddle 1     1 0 1 0 1 1 0 Is it 214? Or is it – 42? Or is it …? It’s a matter of interpretation  How was it declared? Fractions  Similar to what we’re used to with decimal numbers 3.14159 = 3 · 100 + 1 · 10-1 + 4 · 10-2 + 1 · 10-3 + 5 · 10-4 + 9 · 10-5 11.001001 = 1 · 21 + 1 · 20 + 0 · 2-1 + 0 · 2-2 + 1 · 2-3 + 0 · 2-4 + 0 · 2-5 + 1 · 2-6 (11.001001  3.140625) Converting decimal to binary II  98.6  Integer part         98 / 2 49 / 2 24 / 2 12 / 2 6/2 3/2 1/2 1100010 = 49 = 24 = 12 = 6 = 3 = 1 = 0 remainder remainder remainder remainder remainder remainder remainder 0 1 0 0 0 1 1 Converting decimal to binary III  98.6  Fractional part         0.6  2 = 0.2  2 = 0.4  2 = 0.8  2 = 0.6  2 = 0.2  2 = REPEATS .100110 1.2 0.4 0.8 1.6 1.2 0.4 Converting decimal to binary IV   Put together the integral and fractional parts 98.6  1100010.1001100110011001 Scientific notation  Used to represent very large and very small numbers  Ex. Avogadro’s number     6.0221367  1023 particles  602213670000000000000000 Ex. Fundamental charge e    1.60217733  10-19 C  0.000000000000000000160217733 C Floats      SHIFT expression so it is just under 1 and keep track of the number of shifts 1100010.1001100110011001 .11000101001100110011001  27 Express the number of shifts in binary .11000101001100110011001  200000111 Mantissa and Exponent     .11000101001100110011001  200000111 Mantissa .11000101001100110011001  200000111 Exponent Hexadecimal Numbers    Even moderately sized decimal numbers end up as long strings in binary Hexadecimal numbers (base 16) are often used because the strings are shorter and the conversion to binary is easier There are 16 digits: 0-9 and A-F Decimal  Binary  Hex         0 1 2 3 4 5 6 7         0000 0001 0010 0011 0100 0101 0110 0111         0 1 2 3 4 5 6 7         8  1000  8 9  1001  9 10  1010  A 11  1011  B 12  1100  C 13  1101  D 14  1110  E 15  1111  F Binary to Hex   Break a binary string into groups of four bits (nibbles) Convert each nibble separately 1 1 1 0 1 1 0 0 1 0 0 1 E C 9 Addresses   With user friendly computers, one rarely encounters binary, but we sometimes see hex, especially with addresses To enable the computer to distinguish various parts, each is assigned an address, a number      Distinguish among computers on a network Distinguish keyboard and mouse Distinguish among files Distinguish among statements in a program Distinguish among characters in a string How many?     One bit can have two states and thus distinguish between two things Two bits can be in four states and … Three bits can be in eight states, … N bits can be in 2N states 0 0 0 0 0 0 1 1 0 1 0 1 1 1 1 1 0 0 1 1 0 1 0 1 IP(v4) Addresses    An IP(v4) address is used to identify a network and a host on the Internet It is 32 bits long How many distinct IP addresses are there? Characters    We need to represent characters using numbers ASCII (American Standard Code for Information Interchange) is a common way A string of eight bits (a byte) is used to correspond to a character   Thus 28=256 possible characters can be represented Actually ASCII only uses 7 bits, which is 128 characters; the other 128 characters are not “standard” Unicode   Unicode uses 16 bits, how many characters can be represented? Enough for English, Chinese, Arabic and then some. ASCII          0  00110000 1  00110001 … A  01000001 B  01000010 … a  01100001 b  01100010 … Booleans    A Boolean variable is something that is true or false Booleans have two states and could be represented by a single bit (1 for true and 0 for false) Booleans appearing in a program will take up a whole word in memory Boolean Operators    Aka logical operators Have Boolean input and Boolean output Standard:       AND OR NOT XOR (either or but not both) NOR = NOT(OR) NAND = NOT(AND) Venn Diagrams  If inside circle A means A is true, and similarly for circle B, then (A AND B) is the intersection A B Truth Tables  AND INPUT A 0 0 1 1 B 0 1 0 1 OUTPUT A AND B 0 0 0 1 Truth Tables (Cont.)  OR INPUT A 0 0 1 1 B 0 1 0 1 OUTPUT A OR B 0 1 1 1 Truth Tables (Cont.)  XOR (Excluded OR) INPUT A 0 0 1 1 B 0 1 0 1 OUTPUT A XOR B 0 1 1 0 So I lied    We said computing was all about numbers, but it’s really all about logic The adding operation is just a particular combination of logic operations Possibilities for adding two bits     0+0=0 0+1=1 1+0=1 1+1=0 (with (with (with (with no carry) no carry) no carry) a carry) Addition Truth Table INPUT OUTPUT Sum Carry A XOR B A AND B A B 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 All is NAND    Actually you can use one logic gate and a few tricks (like De Morgan’s theorem) to build all of the “combinatorial” circuitry (the circuitry that doesn’t involve memory) NORs work too But we tend to think in ANDs, ORs and NOTs Bit manipulation You can use an AND to select out part of a word (where s is a 1 or 0, etc)  s t u v w x y z 0 0 0 0 AND 1 1 1 1 gives s t u v 0 0 0 0 IP Addresses Revisted     LaSalle’s IP address is what’s called a Class B IP address Of the 32 bits the first two are 10 (this identifies us as Class B) The remaining 14 bits of the first two bytes identify us as LaSalle The remaining 2 bytes are for our internals use (to assign computers within LaSalle) In or Out    To see if an address is local to LaSalle, you would restrict your attention to the first two bytes. HOW? AND it with FFFF0000 Subnets   A network (like LaSalle’s) can be divided further into sub-networks Then subnet masks are used to determine whether or not another computer is on the same subnet