Page 1
Chapter 4
Bits and Bytes
• Why bits?
• Representing information as bits
–Binary/Hexadecimal
–Byte representations
• Representing Expressing in C
• Simple Gates and Circuits
Why Don’t Computers Use Base 10?
Base 10 Number Representation
• That’s why fingers are known as “digits”
• Natural representation for financial transactions
Floating point number cannot exactly represent $1 20
–Floating point number cannot exactly represent $1.20
• Even carries through in scientific notation
–1.5213 X 104
Implementing Electronically
• Hard to store
–ENIAC (First electronic computer) used 10 vacuum tubes / digitC ( st e ect o c co pute ) used 0 acuu tubes / d g t
• Hard to transmit
–Need high precision to encode 10 signal levels on single wire
• Messy to implement digital logic functions
Page 2
Binary Representations
Base 2 Number Representation
• Represent 1521310as 111011011011012
• Represent 1.2010as 1.0011001100110011[0011]…2
• Represent 1 5213 X 104 as 1 1101101101101 X 213
• Represent 1.5213 X 104 as 1.1101101101101 2X 213
Electronic Implementation
• Easy to store with bistable elements
• Reliably transmitted on noisy and inaccurate wires
0 1 0
0.0V 0.5V 2.8V 3.3V
Introduction to Information Technology, Diplome FMIPA UGM
Most computers are digital
Recognize only two discrete states: on or off
Use a binary systemto recognize two states
Page 3
Introduction to Information Technology, Diplome FMIPA UGM
What is a byte?
Eight bits grouped together as a unit
Provides enough different combinations of 0s and 1s to represent 256 individual charactersp
Numbers
Uppercase and lowercase letters
Punctuation marks
(ascii 3)
(ascii 5)
marks
(ascii D)
Byte-Oriented Memory Organization
Programs Refer to Virtual Addresses
• Conceptually very large array of bytes
• Actually implemented with hierarchy of different memory types SRAM DRAM disk
–SRAM, DRAM, disk
–Only allocate for regions actually used by program
• In Unix and Windows NT, address space private to particular “process”
–Program being executed
–Program can clobber its own data, but not that of others
Compiler + Run-Time System Control Allocation
• Where different program objects should be stored
• Multiple mechanisms: static, stack, and heap
Page 4
Machine Words
Machine Has “Word Size”
• Nominal size of integer-valued dataNominal size of integer valued data
–Including addresses
• Most current machines are 32 bits (4 bytes)
–Limits addresses to 4GB
–Becoming too small for memory-intensive applications
• High-end systems are 64 bits (8 bytes)
–Potentially address 1.8 X 1019bytes
• Machines support multiple data formats
• Machines support multiple data formats
–Fractions or multiples of word size
–Always integral number of bytes
Word-Oriented Memory Organization
Addresses Specify Byte
0000 0001 0002
32-bit
Words Bytes Addr. 64-bit Words Addr = 0000 Locations
• Address of first byte in word
• Addresses of successive words differ by 4 (32-bit) or 8 (64-bit)
Page 5
Sizes of C Objects (in Bytes)
C Data Type Compaq Alpha Typical 32-bit Intel IA32
int 4 4 4
int 4 4 4
long int 8 4 4
char 1 1 1
short 2 2 2
float 4 4 4
double 8 8 8
long double 8 8 10/12
char * 8 4 4
char * 8 4 4
»Or any other pointer
Introduction to Information Technology, Diplome FMIPA UGM
Values for Different Word Sizes
W
8 16 32 64
UMax 255 65,535 4,294,967,295 18,446,744,073,709,551,615 TMax 127 32,767 2,147,483,647 9,223,372,036,854,775,807
C Programming
• #include <limits.h>
– K&R, App. B11
• Declares constants, e.g.,
a 3 , 6 , , 83,6 9, 3,3 ,036,85 , 5,80 TMin -128 -32,768 -2,147,483,648 -9,223,372,036,854,775,808
–ULONG_MAX
–LONG_MAX
–LONG_MIN
Page 6
Introduction to Information Technology, Diplome FMIPA UGM
Sign Extension Example
short int x = 15213; int ix = (int) x; short int y = -15213; int iy = (int) y;
Decimal Hex Binary
x 15213 3B 6D 00111011 01101101
ix 15213 00 00 C4 92 00000000 00000000 00111011 01101101
y -15213 C4 93 11000100 10010011
iy -15213 FF FF C4 93 11111111 11111111 11000100 10010011
• Converting from smaller to larger integer data type
• C automatically performs sign extension
Word be ordered in memory
Conventions
• Alphas, PC’s are “Little Endian” machines
–Least significant byte has lowest address
• Sun’s, Mac’s are “Big Endian” machines L t i ifi t b t h hi h t dd
–Least significant byte has highest address
Example
• Variable xhas 4-byte representation 0x01234567
• Address given by &xis 0x100
0x100 0x101 0x102 0x103
Big Endian
address
01 23 45 67 0x100 0x101 0x102 0x103
67 45 23 01
Little Endian
Page 7
Example: show_bytes in C
int a = 15213;
printf("int a = 15213;\n");
show bytes((pointer) &a sizeof(int)); show_bytes((pointer) &a, sizeof(int));
Result:
int a = 15213;
0x11ffffcb8 0x6d
0x11ffffcb9 0x3b
0x11ffffcba 0x00
0x11ffffcbb 0x00
Example: Representing Integers
int A = 15213; int B = -15213; long int C = 15213;
Decimal: 15213
Binary: 0011 1011 0110 1101
Hex: 3 B 6 D
6D 3B 00 00
Alpha A
3B 6D 00 00
Sun A
00 00 6D 3B 00 00
Alpha C
3B 6D 00 00
Sun C
93 C4 FF FF
Alpha B
C4 93 FF FF
Sun B
00 00 00
Page 8
Introduction to Information Technology, Diplome FMIPA UGM
Short Int Example
• One’s complement: Invert bits for negative numbers
• Sign magnitude: Invert sign bit for negative numbers
•short ints o t texamplese a p es
• ISO C does not define what encoding machines use for signed integers, but 99% (or more) use two’s complement.
15213 Unsigned 00111011 01101101
-15213 Two’s complement 11000100 10010011
-15213 One’s complement 11000100 10010010
-15213 Sign magnitude 10111011 01101101
• For truly portable code, don’t count on it.
Example: Representing Floats
Float F = 15213.0;
IEEE Single Precision Floating Point Representation IEEE Single Precision Floating Point Representation
Hex: 4 6 6 D B 4 0 0
Binary: 0100 0110 0110 1101 1011 0100 0000 0000
15213: 1110 1101 1011 01
00 B4 6D 46
Alpha F
B4 00 46 6D
Page 9
Example: Representing Pointers int B = -15213;
int *P = &B;
Alpha Address
A0 FC FF
Alpha P
Alpha Address
Hex: 1 F F F F F C A 0
Binary: 0001 1111 1111 1111 1111 1111 1100 1010 0000
01 00 00 00 FF EF
Sun P
Sun Address
FB 2C
FF Sun Address
Hex: E F F F F B 2 C
Binary: 1110 1111 1111 1111 1111 1011 0010 1100
Different compilers & machines assign different locations to objects
char S[6] = "15213"; Representing Strings
Strings in C
• Represented by array of characters
• Each character encoded in ASCII format
–Standard 7-bit encoding of character setStandard 7 bit encoding of character set Alpha S Sun S
–Other encodings exist, but uncommon
–Character “0” has code 0x30
»Digit i has code 0x30+i • String should be null-terminated
–Final character = 0
Compatibility
B t d i t i
32 31 31 35 33 00 32 31 31 35 33 00
• Byte ordering not an issue
–Data are single byte quantities
• Text files generally platform independent
Page 10
Representation Instruction Code
Encode Program as Sequence of Instructions
• Each simple operation
–Arithmetic operationp
–Read or write memory
–Conditional branch
• Instructions encoded as bytes
–Alpha’s, Sun’s, Mac’s use 4 byte instructions
»Reduced Instruction Set Computer (RISC)
–PC’s use variable length instructions
»Complex Instruction Set Computer (CISC)Complex Instruction Set Computer (CISC)
• Different instruction types and encodings for different machines
–Most code not binary compatible
Example: Representing Instructions
int sum(int x, int y) {
return x+y; 00 00
Alpha sum
81 3
Sun sum
55 89
PC sum
} 00 30 42 01 80 FA 6B E0 08 C3 90 02 00 09
• For this example, Alpha & Sun use two 4-byte instructions
–Use differing numbers of instructions in other cases
• PC uses 7 instructions with lengths 1, 2, and 3 bytes
E5 8B 89 45 0C 03 45 08
Different machines use totally different instructions and encodings –Same for NT and for Linux
–NT / Linux not binary compatible
Page 11
Boolean Algebra
Developed by George Boole in 19th Century
• Algebraic representation of logic
–Encode “True” as 1 and “False” as 0
And
A&B = 1 when both A=1 and B=1
& 0 1 0 0 0 1 0 1
Not
Or
A|B = 1 when either A=1 or B=1
| 0 1
0 0 1
1 1 1
Exclusive-Or (Xor)
~ 0 1 1 0
~A = 1 when A=0
^ 0 1 0 0 1 1 1 0
Exclusive-Or (Xor)
A^B = 1 when either A=1 or B=1, but not both
Page 12
Diagram of a Typical Computer Circuit
1Bit compare for Equality
Adder half
http://lpmpjogja.diknas.go.id/kc/b/boolean/boolean.htm
0 0 1 1 + 0 + 1 + 0 + 1 00 01 01 10
Page 13
Introduction to Information Technology, Diplome FMIPA UGM
Full Adder Circuit
CI A B Q CO
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0 1bi
t
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
4bi t
1bi t
http://lpmpjogja.diknas.go.id/kc/b/boolean/boolean.htm
Introduction to Information Technology, Diplome FMIPA UGM
Example
A: 0011
© Christian Jacob
Chapter Overview
Chapter 4
Binary Data Representation
and
Binary Arithmetic
4.1 Binary Data Representation
4.2 Important Number Systems for Computers
4.2.1 Number System Basics
4.2.2 Useful Number Systems for Computers 4.2.3 Decimal Number System
4.2.4 Binary Number System 4.2.5 Octal Number System
4.2.6 Hexadecimal Number System 4.2.7 Comparison of Number Systems
© Christian Jacob
Chapter Overview 4.4 Conversions Between Number Systems
4.4.1 Conversion of Natural Numbers 4.4.2 Conversion of Rational Numbers
4.5 Binary Logic
4.6 Binary Arithmetic
4.7 Negative Numbers and Complements
4.7.1 Problems of Signed Number Representation 4.7.2 1-Complement ((B-1)-Complement)
4.7.3 2-Complement (B-Complement)
4.8 Floating Point Numbers
4.8.1 Mantissa and Exponent 4.8.2 Floating Point Arithmetics 4.8.3 Limited Precision
4.9 Representation of Strings
Page 3 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Prev Next Last
4.1
Binary Data Representation
Bit: smallest unit of information
yes / no, on / off, L / 0, 1 / 0, 5V / 0V
Byte: group of 8 bits
--> 28 = 256 different states
Word: the number of bits (word length) which
can be processed by a computer in a single step (e.g., 32 or 64)
--> machine dependent Representation:
n-1
2n-1
3
8
2
4
1
2
0
Page 4 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Prev Next Last
• The word size in any given computer is fixed.
Example: 16-bit word
⇒ every word (memory location) can hold a 16-bit pattern, with each bit either 0 or 1.
How many distinct patterns are there in a 16-bit word?
• Each bit has 2 possible values: 0 or 1
⇒ 1 bit has 2 distinct patterns: 0, 1
• With 2 bits, each position has 2 possible values: 00, 01, 10, 11
Page 5 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Prev Next Last
• With 3 bits, again each position can be either 0 or 1: 000 100
001 101 010 110 011 111
⇒ 23 = 8 distinct bit patterns
• In general, for n bits (a word of length n) we have 2n distinct bit patterns.
Page 6 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Important Number Systems for Computers Prev Next Last
4.2
Important Number Systems for Computers
4.2.1 Number System Basics
• Number systems, as we use them, consist of - a basic set of digits (or letters); example: - a base (how many digits); example: • A number is a linear sequence of digits.
• The value of a digit at a specific position depends on its “assigned
meaning” and on its position.
• The value of a number is the sum of these values.
Number: with word length
Value:
Z Z = {0 1 2, , , ,… 9}
B = Z B = Z = 10
N
NB = dn – 1dn – 2…d1d0 n
NB di ⋅ Bi
i = 0
n – 1
∑
dn – 1Bn – 1 + dn – 2Bn – 2 + … + d1B1 + d0B0Page 7 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Important Number Systems for Computers Prev Next Last
4.2.2 Useful Number Systems for Computers
Name Base Digits
dual binary
2 0, 1
octal 8 0, 1, 2, 3, 4, 5, 6, 7
decimal 10 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
hexadecimal sedecimal
Page 8 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Important Number Systems for Computers Prev Next Last
4.2.3 Decimal Number System
;
• Each position to the left of a digit increases by a power of 10. • Each position to the right of a digit decreases by a power of 10.
Example:
4769210 = 2 · 100 +
9 · 101 + 6 · 102 + 7 · 103 + 4 · 104
= 2 + 90 + 600 + 7000 + 40000
Page 9 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Important Number Systems for Computers Prev Next Last
4.2.4 Binary Number System
;
• Each position to the left of a digit increases by a power of 2. • Each position to the right of a digit decreases by a power of 2.
Example:
101110012 = 1 · 20 + 0 · 21 + 0 · 22 + 1 · 23 + 1 · 24 + 1 · 25 + 0 · 26 +
1 · 27 = 1 + 8 + 16 + 32 + 128 = 18510
Page 10 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Important Number Systems for Computers Prev Next Last
Counting in Binary
Decimal Dual Decimal Dual
0 00 000 16 10 000
1 00 001 17 10 001
2 00 010 18 10 010
3 00 011 19 10 011
4 00 100 20 10 100
5 00 101 21 10 101
6 00 110 22 10 110
7 00 111 23 10 111
8 01 000 24 11 000
9 01 001 25 11 001
10 01 010 26 11 010
11 01 011 27 11 011
12 01 100 28 11 100
13 01 101 29 11 101
14 01 110 30 11 110
Page 11 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Important Number Systems for Computers Prev Next Last
4.2.5 Octal Number System
;
• Each position to the left of a digit increases by a power of 8. • Each position to the right of a digit decreases by a power of 8.
Example:
124038 = 3 · 80 + 0 · 81 + 4 · 82 + 2 · 83 + 1 · 84
= 3 · 1 + 0 · 8 + 4 · 64 + 2 · 512 + 1 · 4096 = 537910
Page 12 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Important Number Systems for Computers Prev Next Last
Counting in Octal
Decimal Octal Decimal Octal
0 0 0 16 2 0
1 0 1 17 2 1
2 0 2 18 2 2
3 0 3 19 2 3
4 0 4 20 2 4
5 0 5 21 2 5
6 0 6 22 2 6
7 0 7 23 2 7
8 1 0 24 3 0
9 1 1 25 3 1
10 1 2 26 3 2
11 1 3 27 3 3
12 1 4 28 3 4
13 1 5 29 3 5
14 1 6 30 3 6
Page 13 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Important Number Systems for Computers Prev Next Last
4.2.6 Hexadecimal Number System
;
Each position to the left of a digit increases by a power of 16.
Each position to the right of a digit decreases by a power of 16.
Example:
FB40A16 = 10 · 160 + 0 · 161 + 4 · 162 + 11 · 163 + 15 · 164
= 10 · 1 + 0 · 16 + 4 · 256 + 11 · 4096 + 15 · 65536 = 1,029,13010
Page 14 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Important Number Systems for Computers Prev Next Last
Counting in Hexadecimal
Decimal Hexadecimal Decimal Hexadecimal
0 0 0 16 1 0
1 0 1 17 1 1
2 0 2 18 1 2
3 0 3 19 1 3
4 0 4 20 1 4
5 0 5 21 1 5
6 0 6 22 1 6
7 0 7 23 1 7
8 0 8 24 1 8
9 0 9 25 1 9
10 0 A 26 1 A
11 0 B 27 1 B
12 0 C 28 1 C
13 0 D 29 1 D
14 0 E 30 1 E
Page 15 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Important Number Systems for Computers Prev Next Last
4.2.7 Comparison of Number Systems
Decimal Dual Octal Hexadecimal Decimal Dual Octal Hexadecimal
0 00 000 0 0 0 0 16 10 000 2 0 1 0
1 00 001 0 1 0 1 17 10 001 2 1 1 1
2 00 010 0 2 0 2 18 10 010 2 2 1 2
3 00 011 0 3 0 3 19 10 011 2 3 1 3
4 00 100 0 4 0 4 20 10 100 2 4 1 4
5 00 101 0 5 0 5 21 10 101 2 5 1 5
6 00 110 0 6 0 6 22 10 110 2 6 1 6
7 00 111 0 7 0 7 23 10 111 2 7 1 7
8 01 000 1 0 0 8 24 11 000 3 0 1 8
9 01 001 1 1 0 9 25 11 001 3 1 1 9
10 01 010 1 2 0 A 26 11 010 3 2 1 A
11 01 011 1 3 0 B 27 11 011 3 3 1 B
12 01 100 1 4 0 C 28 11 100 3 4 1 C
13 01 101 1 5 0 D 29 11 101 3 5 1 D
14 01 110 1 6 0 E 30 11 110 3 6 1 E
Page 16 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Powers of 2 Prev Next Last
4.3
Powers of 2
N 2N N 2N
0 1 17 131,072
1 2 18 262,144
2 4 19 524,288
3 8 20 1,048,576
4 16 21 2,097,152
5 32 22 4,194,304
6 64 23 8,388,608
7 128 24 16,777,216
8 256 25 33,554,432
9 512 26 67,108,864
10 1,024 27 134,217,728
11 2,048 28 268,435,456
12 4,096 29 536,870,912
13 8,192 30 1,073,741,824
14 16,384 31 2,147,483,648
15 32,768 32 4,294,967,296
Page 17 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Conversions Between Number Systems Prev Next Last
4.4
Conversions Between Number Systems
4.4.1 Conversion of Natural Numbers
Base 10 ⇒ Base B Conversion
We use the metod of iterated division to convert a number of base 10 into a number of base .
1. Divide the number by : whole number & remainder . - Take as the next number to be divided by .
- Keep as the next left-most digit of the new number .
2. If is zero then STOP, else set and go to step 1.
N10
NB B
N10 B N R
N B
R NB
Page 18 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Conversions Between Number Systems Prev Next Last
Example: 102010 = ? 8
Number to be converted: ; target base
Step 1: 1020 : 8 = 127 Remainder: 4 127 · 8 = 1016
Step 2: 127 : 8 = 15 Remainder: 7 15 · 8 = 120
Step 3: 15 : 8 = 1 Remainder: 7 1 · 8 = 8
Step 4: 1 : 8 = 0 Remainder: 1
⇒ 102010 = 17748
Page 19 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Conversions Between Number Systems Prev Next Last
Base B ⇒ Base 10 Conversion
We use the metod of iterated multiplication to convert a number of base into a number of base 10.
We simply add the “contribution” of each digit.
Example: 1F216 = ?10
Number to be converted: ; target base
1F216 = 2 · 160 + 15 · 161 + 1 · 162
= 2 + 240 + 256
⇒ 1F216 = 49810
NB
B N10
Page 20 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Conversions Between Number Systems Prev Next Last
Conversions between Numbers 2n and 2m
• Conversion 2n ⇒ 21
n = 3: octal ⇒ dual:
Replace 1 octal digit by 3 binary digits.
Example: 3 5 78 = 011 101 1112
n = 4: hexadecimal ⇒ dual
Replace 1 hexadecimal digit by 4 binary digits.
Page 21 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Conversions Between Number Systems Prev Next Last
• Conversion 21 ⇒ 2n
n = 3: dual ⇒ octal:
Replace 3 binary digits by 1 octal digit.
Example: 1011110102 = 101 111 0102
= 5 7 28
n = 4: hexadecimal ⇒ dual
Replace 4 binary digits by 1 hexadecimal digit.
Example: 110001111100102 = 11 0001 1111 00102
Page 22 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Conversions Between Number Systems Prev Next Last
• Conversion 2n ⇒ 2m
2n ⇒ 21 ⇒ 2m
Example: octal ⇒ hexadecimal
263518 = 2 6 3 5 18
octal to binary: = 010 110 011 101 0012
rearrange binary: = 0010 1100 1110 10012
Page 23 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Conversions Between Number Systems Prev Next Last
4.4.2 Conversion of Rational Numbers
Note: An exact conversion of rational numbers ⇒ or ⇒ is not always possible.
• We want: , where is a “sufficiently” small number.
Base B ⇒ Base 10 Conversion
Example: 0.110012 = ?10
0.11001 = 1 · 2-1 + 1 · 2-2 + 0 · 2-3 + 0 · 2-4 + 1 · 2-5
= 1 · 0.5 + 1 · 0.25 + 0 · 0.125 + 0 · 0.0625 + 1 · 0.03125
= 0.5 + 0.25 + 0.03125 = 0.7812510
R10 RB RB
R10
Page 24 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Conversions Between Number Systems Prev Next Last
Base 10 ⇒ Base B Conversion
Example: 0.1910 = ?2 with k = 9 bit precision
⇒ 0.1910 = 0.0011000012 + ε
Step
Operation
1
0.19
0.19 · 2 = 0.38
0.38
0
2
0.38
0.38 · 2 = 0.76
0.76
0
3
0.76
0.76 · 2 = 1.52
0.52
1
4
0.52
0.52 · 2 = 1.04
0.04
1
5
0.04
0.04 · 2 = 0.08
0.08
0
6
0.08
0.08 · 2 = 0.16
0.16
0
7
0.16
0.16 · 2 = 0.32
0.32
0
8
0.32
0.32 · 2 = 0.64
0.64
0
9
0.64
0.64 · 2 = 1.28
0.28
1
i N R z( )–i
Page 25 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Binary Logic Prev Next Last
4.5
Binary Logic
Logical AND ( )
Logical OR ( )
AND 0 1
0 0 0
1 0 1
OR 0 1
0 0 1
1 1 1
x ∧ y
Page 26 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Binary Logic Prev Next Last
Logical NOT ( , negation)
Logical XOR (exclusive OR)
Logical NAND (negated AND)
x
0 1
1 0
XOR 0 1
0 0 1
1 1 0
NAND 0 1
0 1 1
1 1 0
x
¬
x
Page 27 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Binary Logic Prev Next Last
Examples:
11001010 01000111 11110000
AND 00110101 01110010 10101010 00000000 01000010 10100000
11001010 01000111 11110000
NAND 00110101 01110010 10101010 11111111 10111101 01011111
11001010 01000111 11110000 OR 00110101 01110010 10101010
11111111 01110111 11111010
11001010 01000111 11110000 XOR 00110101 01110010 10101010
Page 28 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Binary Arithmetic Prev Next Last
4.6
Binary Arithmetic
Elementary Rules for addition, subtraction, and multiplication
Operation Result Carry
Addition
0 + 0 0 + 1 1 + 0 1 + 1
0 1 1 0 0 0 0 1 Subtraction
0 - 0 0 - 1 1 - 0 1 - 1
0 1 1 0 0 1 0 0 Multiplication
0 · 0 0 · 1 1 · 0 1 · 1
Page 29 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Binary Arithmetic Prev Next Last
Examples:
Addition: Subtraction:
1 0 1 0 1 1 0 1
+ 1 0 1 1 - 1 0 1 0
––––––––––––––––- ––––––––––––––––-carry: 1 0 1 1 carry: 1 0 1 0
+ 1 0 1 1 1 -1 1 1 0
––––––––––––––––-
––––––––––––––––-1 0 ––––––––––––––––-1 0 ––––––––––––––––-1 0 0 1 1
1010 1310
+ 1110 - 1010
––––––––––––––––-
Page 30 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Binary Arithmetic Prev Next Last
Multiplication:
1 1 1 · 1 0 1 ––––––––––––––––––––––––
1 1 1 0 0 0
+ 1 1 1
––––––––––––––––––––––––
carry: 1
+ 1
carry: 1
+ 1
carry: 1
+ 1
Page 31 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Negative Numbers and Complements Prev Next Last
4.7
Negative Numbers and Complements
Integer Numbers: A possible representation
Number = sign & value
• sign = 0 ⇒ +, positive number • sign = 1 ⇒ -, negative number
Range of integer numbers for n bits: - 2n-1+1 … 2n-1-1
15 14 1 0
Page 32 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Negative Numbers and Complements Prev Next Last
Example (1): n = 3
Range: - 23-1+1 … 23-1-1 = - 22+1 … 22-1
= - 4 + 1 … 4 -1 = -3 ... +3
Sign Value Number
0 0 0 0
0 0 1 1
0 1 0 2
0 1 1 3
1 0 0 ?
1 0 1 - 1
1 1 0 - 2
1 1 1 - 3
Page 33 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Negative Numbers and Complements Prev Next Last
4.7.1 Problems of Signed Number Representation
• Given 2 binary numbers: one positive, one negative
0 0 1 1 0 0 (base 2) 12 (base 10)
+ 1 0 1 1 1 1 -15
––––––––––––––– –––––– 1 1 1 0 1 1 (= -2710) -3
• “1-1”: 1 - 1 = 1 + (-1) = 0 ?
0 0 0 1 0 0 1
+ 1 0 0 1 - 0 0 1
–––––––––––– –––––––––
1 0 1 0 (= -210) 0 0 0
Clearly this won´t work!
Page 34 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Negative Numbers and Complements Prev Next Last
4.7.2 1-Complement ((
B-1
)-Complement)
We represent negative numbers by negating the positive
representation of the number (and vice versa): • any 1 is changed to a 0
• any 0 is changed to a 1
Example:
Binary Decimal One´s Complement Decimal
0 1001 9 1 0110 - 9
1 1001 -6 0 0110 + 6
0 0000 0 1 1111 -15
0 1111 15 1 0000 ?
Page 35 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Negative Numbers and Complements Prev Next Last
4.7.3 2-Complement (
B
-Complement)
• Positive numbers are represented as usual. • Negative numbers are created by
- negating the positive value and
- adding one (this avoids the negative zero).
Examples:
Binary Decimal Two´s Complement Decimal
0 1001 9 1 0110 + 1 = 1 0111 -9
0 1101 3 1 0010 + 1 = 1 0011 -3
0 0000 0 1 1111 + 1 = 0 0000 0
0 1111 15 1 0000 + 1 = 1 0001 -15
1 1111 -1 ¬(1 1111 - 1) =
¬(1 1110) = 0 0001
1
Page 36 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Negative Numbers and Complements Prev Next Last
Number ring for 5-digit 2-complement
00000
00001 00010
00011
00100
00101
00110
00111
11000
10111
10110
10101
10100
10011
10010 10001
11111
11110
11101
11100
11011
11010
11001
10000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 -16 positive numbers negative numbers 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11-12 -13-14-15 31 30 29 28 27 26 25 24 23 22 212019 18 17
Page 37 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Negative Numbers and Complements Prev Next Last
With the 2-complement, subtractions can be performed as simple additions:
Example: 5 digit precision, base 10
Example 1 Example 2
B = 10 1410 - 710 910 - 1310
Complement 7: 00111
(-7)B-1: 11000 + 1 ––––––– (-7)B: 11001
13: 01101 (-13)B-1: 10010 + 1 ––––––– (-13)B: 10011
Addition 14: 01110
+(-7)B: + 11001 ––––––––– 7: 1 00111
Page 38 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Floating Point Numbers Prev Next Last
4.8
Floating Point Numbers
4.8.1 Mantissa and Exponent
Recall the general form of numbers expressed in scientific notation: • 3.141592653589793238462643383279502884197
• 6.02 x 1023
Printed out by a computer these numbers usually look like this: • 3.1415e0
• 6.02e23
This representation saves space and reduces redundancy.
Hence, the usual format for a 32-bit real (floating point) number is:
Page 39 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Floating Point Numbers Prev Next Last
4.8.2 Floating Point Arithmetics
Example: 0.740 · 105 + 0.843 · 103
Addition:
• 1. Identify mantissae and exponents • 2. Compare exponents
• 3. Adjust exponents if necessary • 4. Adjust the shorter mantissa • 5. Add mantissae
• 6. Normalize mantissa • 7. Adjust exponent
Operands Compare Exponents Adjust Exponents and Mantissae
0.740 · 105
0.843 · 103 e1 - e2 = 2
0.740 · 105 + 0.008 · 105
Page 40 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Floating Point Numbers Prev Next Last
Example: Multiplication • 1. Multiply of mantissae • 2. Normalize mantissae • 3. Adjust exponents • 4. Add exponents
Example: (0.792 · 105) · (0.116 · 10-3)
• Step 1: multiplication of the mantissae: 0.792 · 0.116 =
0.792 · 10-1
+ 0.792 · 10-2
Page 41 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Floating Point Numbers Prev Next Last
• Step 1 (cont.): step-by-step multiplication of the mantissae 0.792 · 10-1 0.792 · 10-1
0.871 · 10-1 + 0.792 · 10-2 0.079 · 10-1
0.918 · 10-1
+ 0.4752 · 10-2 0.047 · 10-1
• Step 2:
5 + (-3) + (-1) = 1
• Result:
0.918 · 101 (with 3 digits of precision in the mantissa)
• Step 1 (cont.): step-by-step multiplication of the mantissae 0.792 · 10-1 0.792 · 10-1
0.871 · 10-1 + 0.792 · 10-2 0.079 · 10-1
0.918 · 10-1
+ 0.4752 · 10-2 0.047 · 10-1
Step 2: Add exponents 5 + (-3) + (-1) = 1
• Result:
Page 42 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Floating Point Numbers Prev Next Last
4.8.3 Limited Precision
Note: Not all values can be represented!
Example:
- mantissa: 2 decimal digits - exponent: 1 decimal digit
• Sample number: 74 · 102 = 7400
What is the next higher value?
75 · 102 = 7500 What about values 7400 < x < 7500?
⇒ They cannot be represented!!!
Page 43 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Representation of Strings Prev Next Last
4.9
Representation of Strings
4.9.1 Representation of Characters
Usually: single characters are represented by 1 byte
different standards: ASCII1, EBCDIC2
Currently: internationalization with Unicode
a single character is represented by 2 bytes
1. ASCII: American Standard Code for Information Interchange
Page 44 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Representation of Strings Prev Next Last
ASCII Character Encoding
Compare the Unicode character encodings …
D C D C D C D C D C D C D C D C
0 NUL 16 DLE 32 SP 48 0 64 @ 80 P 96 ‘ 112 p
1 SCH 17 DC1 33 ! 49 1 65 A 81 Q 97 a 113 q
2 STX 18 DC2 34 “ 50 2 66 B 82 R 98 b 114 r
3 ETX 19 DC3 35 # 51 3 67 C 83 S 99 c 115 s
4 EOT 20 DC4 36 $ 52 4 68 D 84 T 100 d 116 t
5 ENQ 21 NAK 37 % 53 5 69 E 85 U 101 e 117 u
6 ACK 22 SYN 38 & 54 6 70 F 86 V 102 f 118 v
7 BEL 23 ETB 39 ´ 55 7 71 G 87 W 103 g 119 w
8 BS 24 CAN 40 ( 56 8 72 H 88 X 104 h 120 x
9 HT 25 EM 41 ) 57 9 73 I 89 Y 105 i 121 y
10 LF 26 SUB 42 * 58 : 74 J 90 Z 106 j 122 z
11 VT 27 ESC 43 + 59 ; 75 K 91 [ 107 k 123 {
12 FF 28 FS 44 , 60 < 76 L 92 \ 108 l 124 |
13 CR 29 GS 45 - 61 = 77 M 93 ] 109 m 125 }
14 S0 30 RS 46 . 62 > 78 N 94 ^ 110 n 126 ~
Page 45 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Representation of Strings Prev Next Last
4.10 Representation of Strings
Strings are represented by sequences of characters (⇒ usually: byte sequence)
1. Fixed length strings (example: length = 7)
2. Variable length strings
3. Encoding with string length at the beginning
1 P 2 e 3 t 4 e 5 r 6 SP 7 SP 1 C 2 o 3 m 4 p 5 u 6 t 7 e r 1 P 2 e 3 t 4 e 5 r 6 NUL
7 n-1 n
2 P 3 e 4 t 5 e 6 r 7
8 n-1 n
1
Page 46 Chapter 4: Binary Data Representation and Arithmetic © Christian Jacob
First Back TOC Representation of Strings Prev Next Last
With ASCII charcter encoding string comparisons are possible:
´AA´ < ´AD´ because: 101 1018 < 101 1048
´AA´ < ´Aa´ 101 1018 < 101 1418
´A1´ < ´AA´ 101 0618 < 101 1018
Hence, sorting of strings becomes easy: