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
COM181 Computer Hardware Lecture 1: The story of ‘1’ Ian McCrum Room 5B18, 02890366364 [email protected] Http://www.eej.ulst.ac.uk/~ian/modules/COM181 The real world • The temperature of air – is a continuously varying value; the “value” changes over “time” • Time is a continuously varying value as well. • We code these into units, Celsius / Fahrenheit / Kelvin, seconds, microseconds etc., COM181 Computer Hardware:IMcC 2 Computers • Computers must manipulate data; they take inputs, do something and produce outputs. • Internally how do they represent the things they manipulate. • It is easy to make devices that can hold/store/manipulate voltages, it is easier if only two voltages are allowed. • We can describe this two values system as being a binary system • We can use various symbols/phrases for the two values. COM181 Computer Hardware:IMcC 3 Various binary symbols • True /False • One /zero • Active /inactive • Current flowing in one direction or the other (+/-20uA) • Current of one value, or a different value (4-20mA) • Positive voltage/negative voltage (+/-12Volts) • Presence of a voltage/ absence of a voltage (+5V / 0V ) COM181 Computer Hardware:IMcC 4 What is Voltage and Current • Imagine a water tank in the roofspace • You open the tap and water comes out. • The higher the tank, the higher the “pressure” or “driving force” • The wider the pipe the more flow – gallons/hour. • Pressure is “analogous” (but not identical to Voltage • Flow rate is analogous to current • Power is the product of Voltage and Current • Resistance is the ratio of Volts to amps Note the units: • Voltage uses the symbol V and the unit Voltage (V, mV or µV) • Current uses the symbol I and the unit Amps (A, mA or µA) • Resistance uses the symbol R and the Unit Ohms (Ω, kΩ or MΩ ) • Power uses the symbol P and the unit Watts (W or kW) • • • • Where small m stands for milli and is a 1/1000 or x 10-3 big M stands for Mega and is a 1,000,000 or x106 K stands for Kilo and is x 1000 or x 103 µ stands for micro and is x 1/1,000,000 or x 10-6 << not needed for the exam - just for interest >> COM181 Computer Hardware:IMcC 5 Traditional Logic Circuit values • +5 Volts / 0Volts. – this is approximate! • Typically +4.5V and +0.4V • Guaranteed output >2.4V and <0.4V • Input recognises >2.0V and <0.8V • This allows “noise margin” of 400mV Note: • Modern chips use less “traditional” (old) values. • 3.3V chips common, internally large chips often reduce to 1.8V, 1.2V or less. The reason is to consume less power and go faster – but the chips are harder to make (i.e more expensive) until you have the foundry running well. COM181 Computer Hardware:IMcC 6 99.999% of the time it is ok to use ‘1’ and ‘0’ or to talk about 5 volts as a ‘1’ • How can we use ‘1’s and ‘0’s to represent real world values – such as temperature or time? COM181 Computer Hardware:IMcC 7 Binary codes • • • • • • • • • • Consider a number of bits as a group Each bits position indicates its importance Simplest is to use powers of 2 (but note it is NOT the only way) E.g if we use 4 bit groups we have “weights” of [8 4 2 1] So 1001 is considered as 8+1 (actually 8x1 + 4x0 + 2x0 + 1x1 ) A 4 bit binary word (sometimes called a “nibble”) can represent any number between 0 and 15 inclusive. Note the binary weights can also be written as x23, x22, x21, x20 and that a 4 bit group can represent from 0 to 24-1 values (0-15 here) An 8 bit group is called a byte and can hold 0-255 values (0 - 28-1) A 16 bit group CAN be called a word – 0-65535 values Technically a word is the base size of the registers within a machine. A machine with 32 bit registers has a word size of 32 bits which can hold numbers of about 4 billion COM181 Computer Hardware:IMcC 8 Natural Binary – the 8421 weights • We can convert binary to decimal by just adding up the weights • To convert decimal to binary we can successively divide by two and note the remainder. E.g 1110 11/2 = 5 remainder 1 5/2 = 2 remainder 1 2/2 = 1 remainder 0 1/2 = 0 remainder 1 so 1110 is 10112 COM181 Computer Hardware:IMcC 9 Conventions • 11012 can also be written as b’1101’ Some software tools accepts this as an input • 4 bits can be replaced by a single symbol, we can’t just use numbers as we need 16. The HEX convention allows use of 0-9 and then ‘A’, ‘B’, ‘C’, ‘D’, ‘E’ and ‘F’ • Many software tools use a prefix of 0x • So 0xC is 12 in decimal or 11002 in binary • Of most use in large binary numbers – too errorprone to write down as b’11011010101010101010111101110101’ COM181 Computer Hardware:IMcC 10 HEX numbers • • • • • • • • • • b’11011010101010101010111101110101’ To convert binary to hex, split the binary up in 4 bit nibbles. NB always start at the rightmost bit, the least significant bit b0 Add leading zeros so that you are dealing with a multiple of 4, not needed here as the example is a 32 bit number. 1101 1010 1010 1010 1010 1111 0111 0101 Use a lookup table to convert each nibble to a single symbol 1101 1010 1010 1010 1010 1111 0111 0101 D A A A A F 7 5 Collect the symbols together and prefix with 0x The HEX representation of this number is 0xDAAAAF75 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 This way of showing you HEX implies it is just a way of saving ink – just a way of conveniently working with binary. Alternatively you can treat HEX numbers as BASE-16 numbers the same way we used BASE 2 numbers with binary COM181 Computer Hardware:IMcC 11 = = = = = = = = = = = = = = = = 0 1 2 3 4 5 6 7 8 9 A B C D E F HEX numbers • To convert 0x247E to decimal • Treat the weights as x163, x162, x161, x160 • (if you do a lot of these you end up remembering that the weights are x4096, x256, x16 and x1.) • 4 hex digits can represent 16 bits, 0-65535 • 4 hex digits can represent 0 to 164-1 • 32 bit binary numbers require 8 hex digits. COM181 Computer Hardware:IMcC 12 Coding numbers in ‘1’s and ‘0’s • Irrespective of whether we write down hex or binary, the computer stores ‘1’s and ‘0’s • Given an arbitrary binary number we need to know what it is representing. • Some (old)calculators uses 8421 codes but do not allow codes above 1001. • Some (old)caluclators use a 2421 code • There is also an excess-3 code in use. COM181 Computer Hardware:IMcC 13 Uses for binary numbers • • • You can use binary numbers to represent positive whole numbers. You can use “natural binary” or any weighted binary code You can use a subset of the available codes e.g 10 out of 16 - This is “Binary Coded Decimal” also called BCD, this suits humans... • Positive and negative numbers (2 conventions are in common use) • The tones on a piano! (i.e anything) • Floating point numbers (a couple of conventions exist) • Character codes (usually 7 or 8 bit ASCII codes or unicode – up to 16 bits ) I.E you must know the convention that is being used if you want to make sense of a binary number. Do not assume it is just natural binary. COM181 Computer Hardware:IMcC 14 Positive and Negative binary • One method suits humans, one suits chips • If we set aside a single bit out of the binary word (usually the leftmost bit). We can use it as a “sign” bit where a ‘1’ means ‘-’ and a ‘0’ means ‘+’ This is called “Signed Binary” • So 1101 might mean [1] 101 = -5 • • • • • We can change the sign of the left most weight. So for 4 bits we’d use (x -8),(x4),(x2),(x1). So 1101 = (-8) + (4) +(1) = -3. This method is called “Two’s Complement” Calculating the equivalent decimal value by using the sign of the leftmost bit is not the only way. An alternative is to convert the binary number to its “ones complement” and add 1. • Hence 1101 has a ones complement of 0010 and by adding 1 we get 0011 which is +3 for the twos complement of the 1101. Taking the two’s complement is the equivalent of changing the sign so the original number must have been -3 COM181 Computer Hardware:IMcC 15 Floating Point numbers • As humans, we are used to fractions such as 12.75 • In the binary world we can design our own conventions. i.e code 1275 into 16 bits and assume there is a implied “binary point” in the middle. This would be BCD • Or extend the binary system to use weights of ½ , ¼ , 1/8 This might mean some loss of precision. (we can code 12.75 exactly into our extended weighted natural binary. 1100.110 ) but we could not do 12.80 • The scientific notation 2.4 x 103 can also be encoded in binary. There is an IEEE standard for this (IEEE754)(although some others exist as well) Basically we “normalise” and encode the mantissa and exponent into fixed size fields. • When you normalise a binary number it will always begin with a ‘1’ so we can leave it out! • The 32 bit IEEE standard reserves one bit for the sign, 8 bits for the exponent and 23 bits for a representation of the mantissa (without its leading ‘1’) the exponent is stored with a bias of +127 and can be in the range -126 to +127 to fit in the 8 bits. Zero and other “special numbers” can use codes at the extremities of the allowable range. COM181 Computer Hardware:IMcC 16 ASCII codes for characters Copied from http://en.wikipedia.org/wiki/File:ASCII_Code_Chart.svg So the 8 bit HEX code 0x47 is the ASCII character ‘G’ COM181 Computer Hardware:IMcC 17 Summary • Be able to convert Binary, hex and decimal to and from each others representations • Be able to convert signed and 2’s complement numbers to other representations • Be able to convert fractions and scientific notations to and from decimal • Be able to work out the hex or binary codes for characters using ASCII COM181 Computer Hardware:IMcC 18