Numbers

advertisement
Binary Representation
Binary Representation for Numbers
 Assume 4-bit numbers
 5 as an integer
0101
 -5 as an integer


How?
 5.0 as a real number
How?
 What about 5.5?

Sign Bit
 Reserve the most-significant bit to indicate sign
 Consider integers in 4 bits
 Most-significant bit is sign: 0 is positive, 1 is negative
 The 3 remaining bits is magnitude
 0010 = 2
 1010 = -2
 How many possible combinations for 4 bits?
 How many unique integers using this scheme?
Two’s Complement
 Advantages
 # of combinations of bits = # of unique integers
 Addition is “natural”
 Convert to two’s complement (and vice versa)
1.
invert the bits
2.
add one
3.
ignore the extra carry bit if present
 Consider 4-bit numbers
 0010 [2] -> 1101 -> 1110 [-2]
Addition
 0010 [2] + 1110 [-2]
 0000
[ignoring the final carry—extra bit]
 0011 [3] + 1110 [-2]
 0001 [1]
 1110 [-2] + 1101 [-3]
 1011 [-5]
Range of Two’s Complement
 4-bit numbers
 Largest positive: 0111 (binary) => 7 (decimal)
 Smallest negative: 1000 (binary) => -8 (decimal)
 # of unique integers = # of bit combinations = 16
 n bits
 ?
Binary Real Numbers
…
 5.5
101.1
 5.25
 101.01
 5.125
 101.001
 5.75
 101.11

23
22
21
20
.
2-1
…
8 bits only
25
24
23
22
21
20
2-1
 5.5
101.1 -> 000101 10
5.25
 101.01 -> 000101 01
5.125
 101.001 -> ??
With only 2 places after the point, the precision is .25
What if the point is allowed to move around?





2-2
Floating-point Numbers
 Decimal
54.3
 5.43 x 101

[scientific notation]
 Binary
101.001
 10.1001 x 21
 1.01001 x 22


[more correctly: 10.1001 x 101]
[more correctly: 1.01001 x 1010]
What can we say about the most significant bit?
Floating-point Numbers
 General form: sign 1.mantissa x 2exponent
 the most significant digit is right before the dot


Always 1 [no need to represent it]
Exponent in Two’s complement
 1.01001 x 22
 Sign: 0 (positive)
 Mantissa: 0100
 Exponent: 010 (decimal 2)
Java Floating-point Numbers
sign
exponent
 Sign:
1 bit [0 is positive]
 Mantissa:
 23 bits in float
 52 bits in double
 Exponent:
 8 bits in float
 11 bits in double

mantissa
Imprecision in Floating-Point Numbers
 Floating-point numbers often are only
approximations since they are stored with a
finite number of bits.
 Hence 1.0/3.0 is slightly less than 1/3.
 1.0/3.0 + 1.0/3.0 + 1.0/3.0 could be less
than 1.

www.cs.fit.edu/~pkc/classes/iComputing/FloatEquality.java
Abstraction Levels
 Binary
 Data

Numbers (unsigned, signed [Two’s complement], floating point)
 Text (ASCII, Unicode)
• HTML

Color
• Image (JPEG)
 Video (MPEG)


Sound (MP3)
Instructions
Machine language (CPU-dependent)
 Text (ASCII)
 Assembly language (CPU-dependent)

• High-level language (CPU -independent: Java, C++, FORTRAN)
Download