chapter 2 bits, data types, and operations. 2-2 hexadecimal notation it is often convenient to write...
TRANSCRIPT
2-2
Hexadecimal NotationIt is often convenient to write binary (base-2) numbersas hexadecimal (base-16) numbers instead.
• fewer digits -- four bits per hex digit• less error prone -- easy to corrupt long string of 1’s and 0’s
Binary Hex Decimal0000 0 0
0001 1 1
0010 2 2
0011 3 3
0100 4 4
0101 5 5
0110 6 6
0111 7 7
Binary Hex Decimal1000 8 8
1001 9 9
1010 A 10
1011 B 11
1100 C 12
1101 D 13
1110 E 14
1111 F 15
2-3
Converting from Binary to HexadecimalEvery four bits is a hex digit.
• start grouping from right-hand side
011101010001111010011010111
7D4F8A3
This is not a new machine representation,just a convenient way to write the number.
Converting from Hexadecimal to BinaryHexadecimal to binary conversion:
Remember that hex is a 4-bit representation.
2-4
FA91hex or xFA91
F A 9 11111 1010 1001 0001
2DEhex or x2DE
2 D E0010 1011 1100
Convert Hexadecimal to DecimalHexadecimal to decimal is performed the same as binary
to decimal, positional notation.• Binary to decimal uses base 2• Decimal is base 10• Hexadecimal is base 16
2-5
3AF4hex = 3x163 + Ax162 + Fx161 + 4x160
= 3x163 + 10x162 + 15x161 + 4x160
= 3x4096 + 10x256 + 15x16 + 4x1= 12,288 + 2,560 + 240 + 4
= 19,092ten
2-6
Fractions: Fixed-PointHow can we represent fractions?
• Use a “binary point” to separate positivefrom negative powers of two -- just like “decimal point.”
• 2’s comp addition and subtraction still work.if binary points are aligned
00101000.101 (40.625)
+ 11111110.110 (-1.25)
00100111.011 (39.375)
2-1 = 0.5
2-2 = 0.25
2-3 = 0.125
No new operations -- same as integer arithmetic.
2-7
Fractions: Fixed-PointHow is -6 5/8 represented in the floating point data type?
• Break problem into two partsWhole: 6 = 1x22 + 1x21 + 0x20 => 110Fraction: 5/8 = ½ (4/8) + 1/8 => 1x2-1 + 0x2-2 + 1x2-3 = .101
-6 5/8 ten = - 110.101two
2-8
Very Large and Very Small: Floating-PointLarge values: 6.023 x 1023 -- requires 79 bits
Small values: 6.626 x 10-34 -- requires >110 bits
Use equivalent of “scientific notation”: F x 2E
Need to represent F (fraction), E (exponent), and sign.
IEEE 754 Floating-Point Standard (32-bits):
S Exponent Fraction
1b 8b 23b
0exponent,2fraction.0)1(
254exponent1,2fraction.1)1(126
127exponent
S
S
N
N
2-9
Floating Point ExampleSingle-precision IEEE floating point number:
10111111010000000000000000000000
• Sign is 1 – number is negative.• Exponent field is 01111110 = 126 (decimal).• Fraction is 0.100000000000… = 0.5 (decimal).
Value = -1.5 x 2(126-127) = -1.5 x 2-1 = -0.75.
sign exponent fraction
2-10
Floating Point ExampleSingle-precision IEEE floating point number:
00111111110010000000000000000000
• Sign is 0 – number is positive.• Exponent field is 01111111 = 127 (decimal).• Fraction is 0.100100000000… = 0.5625 (decimal).
Value = 1.5625 x 2(127-127) = 1.5625 x 20 = 1.5625.
sign exponent fraction
2-11
Floating Point ExampleSingle-precision IEEE floating point number:
00000000011110000000000000000000
• Sign is 0 – number is positive.• Exponent field is 00000000 = 0 (decimal) special case.• Fraction is 0.111100000000… = 0.9375 (decimal).
Value = 0.9375 x 2(-126) = = 0.9375 x 2-126.
sign exponent fraction
2-12
Text: ASCII CharactersASCII: Maps 128 characters to 7-bit code.
• both printable and non-printable (ESC, DEL, …) characters
00 nul10 dle20 sp 30 0 40 @ 50 P 60 ` 70 p01 soh11 dc121 ! 31 1 41 A 51 Q 61 a 71 q02 stx12 dc222 " 32 2 42 B 52 R 62 b 72 r03 etx13 dc323 # 33 3 43 C 53 S 63 c 73 s04 eot14 dc424 $ 34 4 44 D 54 T 64 d 74 t05 enq15 nak25 % 35 5 45 E 55 U 65 e 75 u06 ack16 syn26 & 36 6 46 F 56 V 66 f 76 v07 bel17 etb27 ' 37 7 47 G 57 W 67 g 77 w08 bs 18 can28 ( 38 8 48 H 58 X 68 h 78 x09 ht 19 em 29 ) 39 9 49 I 59 Y 69 i 79 y0a nl 1a sub2a * 3a : 4a J 5a Z 6a j 7a z0b vt 1b esc2b + 3b ; 4b K 5b [ 6b k 7b {0c np 1c fs 2c , 3c < 4c L 5c \ 6c l 7c |0d cr 1d gs 2d - 3d = 4d M 5d ] 6d m 7d }0e so 1e rs 2e . 3e > 4e N 5e ^ 6e n 7e ~0f si 1f us 2f / 3f ? 4f O 5f _ 6f o 7f del
2-13
Interesting Properties of ASCII CodeWhat is relationship between a decimal digit ('0', '1', …)and its ASCII code? x30 -> ‘0’, x31 -> ’1’, … x39 -> ’9’
What is the difference between an upper-case letter ('A', 'B', …) and its lower-case equivalent ('a', 'b', …)?
Difference of x20
Given two ASCII characters, how do we tell which comes first in alphabetical order? Compare ASCII values, the lowest value is the first in alphabetical order
Are 128 characters enough?(http://www.unicode.org/)
2-14
Other Data TypesText strings
• sequence of characters, terminated with NULL (0)• typically, no hardware support
Image• array of pixels
monochrome: one bit (1/0 = black/white)color: red, green, blue (RGB) components (e.g., 8 bits each)other properties: transparency
• hardware support:typically none, in general-purpose processorsMMX -- multiple 8-bit operations on 32-bit word
Sound• sequence of fixed-point numbers
2 - 15
Another use for bits: Logic
Beyond numbers
• logical variables can be true or false, on or off, etc., and so are readily represented by the binary system.
• A logical variable A can take the values false = 0 or true = 1 only.
• The manipulation of logical variables is known as Boolean Algebra, and has its own set of operations - which are not to be confused with the arithmetical operations of the previous section.
• Some basic operations: NOT, AND, OR, XOR
2-16
LC-3 Data TypesSome data types are supported directly by theinstruction set architecture.
For LC-3, there is only one hardware-supported data type:• 16-bit 2’s complement signed integer• Operations: ADD, AND, NOT
Other data types are supported by interpreting16-bit values as logical, text, fixed-point, etc.,in the software that we write.