SlideShare a Scribd company logo
Number Systems
and
Number Representation
1
2
For Your Amusement
Question: Why do computer programmers confuse
Christmas and Halloween?
Answer: Because 25 Dec = 31 Oct
-- http://www.electronicsweekly.com
3
Goals of this Lecture
Help you learn (or refresh your memory) about:
• The binary, hexadecimal, and octal number systems
• Finite representation of unsigned integers
• Finite representation of signed integers
• Finite representation of rational numbers (if time)
Why?
• A power programmer must know number systems and data
representation to fully understand C’s primitive data types
Primitive values and
the operations on them
Agenda
Number Systems
Finite representation of unsigned integers
Finite representation of signed integers
Finite representation of rational numbers (if time)
4
5
The Decimal Number System
Name
• “decem” (Latin) => ten
Characteristics
• Ten symbols
• 0 1 2 3 4 5 6 7 8 9
• Positional
• 2945 ≠ 2495
• 2945 = (2*103) + (9*102) + (4*101) + (5*100)
(Most) people use the decimal number system
Why?
The Binary Number System
Name
• “binarius” (Latin) => two
Characteristics
• Two symbols
• 0 1
• Positional
• 1010B ≠ 1100B
Most (digital) computers use the binary number system
Terminology
• Bit: a binary digit
• Byte: (typically) 8 bits
6
Why?
Decimal-Binary Equivalence
7
Decimal Binary
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111
Decimal Binary
16 10000
17 10001
18 10010
19 10011
20 10100
21 10101
22 10110
23 10111
24 11000
25 11001
26 11010
27 11011
28 11100
29 11101
30 11110
31 11111
... ...
Decimal-Binary Conversion
Binary to decimal: expand using positional notation
8
100101B = (1*25)+(0*24)+(0*23)+(1*22)+(0*21)+(1*20)
= 32 + 0 + 0 + 4 + 0 + 1
= 37
Decimal-Binary Conversion
Decimal to binary: do the reverse
• Determine largest power of 2 ≤ number; write template
• Fill in template
9
37 = (?*25)+(?*24)+(?*23)+(?*22)+(?*21)+(?*20)
37 = (1*25)+(0*24)+(0*23)+(1*22)+(0*21)+(1*20)
-32
5
-4
1 100101B
-1
0
Decimal-Binary Conversion
Decimal to binary shortcut
• Repeatedly divide by 2, consider remainder
10
37 / 2 = 18 R 1
18 / 2 = 9 R 0
9 / 2 = 4 R 1
4 / 2 = 2 R 0
2 / 2 = 1 R 0
1 / 2 = 0 R 1
Read from bottom
to top: 100101B
The Hexadecimal Number System
Name
• “hexa” (Greek) => six
• “decem” (Latin) => ten
Characteristics
• Sixteen symbols
• 0 1 2 3 4 5 6 7 8 9 A B C D E F
• Positional
• A13DH ≠ 3DA1H
Computer programmers often use the hexadecimal number
system
11
Why?
Decimal-Hexadecimal Equivalence
12
Decimal Hex
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 A
11 B
12 C
13 D
14 E
15 F
Decimal Hex
16 10
17 11
18 12
19 13
20 14
21 15
22 16
23 17
24 18
25 19
26 1A
27 1B
28 1C
29 1D
30 1E
31 1F
Decimal Hex
32 20
33 21
34 22
35 23
36 24
37 25
38 26
39 27
40 28
41 29
42 2A
43 2B
44 2C
45 2D
46 2E
47 2F
... ...
Decimal-Hexadecimal Conversion
Hexadecimal to decimal: expand using positional notation
Decimal to hexadecimal: use the shortcut
13
25H = (2*161) + (5*160)
= 32 + 5
= 37
37 / 16 = 2 R 5
2 / 16 = 0 R 2
Read from bottom
to top: 25H
Binary-Hexadecimal Conversion
Observation: 161 = 24
• Every 1 hexadecimal digit corresponds to 4 binary digits
Binary to hexadecimal
Hexadecimal to binary
14
1010000100111101B
A 1 3 DH
Digit count in binary number
not a multiple of 4 =>
pad with zeros on left
A 1 3 DH
1010000100111101B
Discard leading zeros
from binary number if
appropriate
Is it clear why programmers
often use hexadecimal?
The Octal Number System
Name
• “octo” (Latin) => eight
Characteristics
• Eight symbols
• 0 1 2 3 4 5 6 7
• Positional
• 1743O ≠ 7314O
Computer programmers often use the octal number system
15
Why?
Decimal-Octal Equivalence
16
Decimal Octal
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 10
9 11
10 12
11 13
12 14
13 15
14 16
15 17
Decimal Octal
16 20
17 21
18 22
19 23
20 24
21 25
22 26
23 27
24 30
25 31
26 32
27 33
28 34
29 35
30 36
31 37
Decimal Octal
32 40
33 41
34 42
35 43
36 44
37 45
38 46
39 47
40 50
41 51
42 52
43 53
44 54
45 55
46 56
47 57
... ...
Decimal-Octal Conversion
Octal to decimal: expand using positional notation
Decimal to octal: use the shortcut
17
37O = (3*81) + (7*80)
= 24 + 7
= 31
31 / 8 = 3 R 7
3 / 8 = 0 R 3
Read from bottom
to top: 37O
Binary-Octal Conversion
Observation: 81 = 23
• Every 1 octal digit corresponds to 3 binary digits
Binary to octal
Octal to binary
18
001010000100111101B
1 2 0 4 7 5O
Digit count in binary number
not a multiple of 3 =>
pad with zeros on left
Discard leading zeros
from binary number if
appropriate
1 2 0 4 7 5O
001010000100111101B
Is it clear why programmers
sometimes use octal?
Agenda
Number Systems
Finite representation of unsigned integers
Finite representation of signed integers
Finite representation of rational numbers (if time)
19
Unsigned Data Types: Java vs. C
Java has type
• int
• Can represent signed integers
C has type:
• signed int
• Can represent signed integers
• int
• Same as signed int
• unsigned int
• Can represent only unsigned integers
To understand C, must consider representation of both
unsigned and signed integers
20
Representing Unsigned Integers
Mathematics
• Range is 0 to ∞
Computer programming
• Range limited by computer’s word size
• Word size is n bits => range is 0 to 2n – 1
• Exceed range => overflow
Nobel computers with gcc217
• n = 32, so range is 0 to 232 – 1 (4,294,967,295)
Pretend computer
• n = 4, so range is 0 to 24 – 1 (15)
Hereafter, assume word size = 4
• All points generalize to word size = 32, word size = n
21
Representing Unsigned Integers
On pretend computer
22
Unsigned
Integer Rep
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111
Adding Unsigned Integers
Addition
Results are mod 24
23
11
7 0111B
+ 10 + 1010B
-- ----
1 10001B
1
3 0011B
+ 10 + 1010B
-- ----
13 1101B
Start at right column
Proceed leftward
Carry 1 when necessary
Beware of overflow
How would you
detect overflow
programmatically?
Subtracting Unsigned Integers
Subtraction
Results are mod 24
24
2
3 0011B
- 10 - 1010B
-- ----
9 1001B
12
0202
10 1010B
- 7 - 0111B
-- ----
3 0011B
Start at right column
Proceed leftward
Borrow 2 when necessary
Beware of overflow
How would you
detect overflow
programmatically?
Shifting Unsigned Integers
Bitwise right shift (>> in C): fill on left with zeros
Bitwise left shift (<< in C): fill on right with zeros
Results are mod 24
25
10 >> 1 => 5
10 >> 2 => 2
5 << 1 => 10
3 << 2 => 12
What is the effect
arithmetically? (No
fair looking ahead)
What is the effect
arithmetically? (No
fair looking ahead)
1010B 0101B
1010B 0010B
0101B 1010B
0011B 1100B
Other Operations on Unsigned Ints
Bitwise NOT (~ in C)
• Flip each bit
Bitwise AND (& in C)
• Logical AND corresponding bits
26
~10 => 5
10 1010B
& 7 & 0111B
-- ----
2 0010B
Useful for setting
selected bits to 0
1010B 0101B
Other Operations on Unsigned Ints
Bitwise OR: (| in C)
• Logical OR corresponding bits
Bitwise exclusive OR (^ in C)
• Logical exclusive OR corresponding bits
27
10 1010B
| 1 | 0001B
-- ----
11 1011B
Useful for setting
selected bits to 1
10 1010B
^ 10 ^ 1010B
-- ----
0 0000B
x ^ x sets
all bits to 0
Aside: Using Bitwise Ops for Arith
Can use <<, >>, and & to do some arithmetic efficiently
x * 2y == x << y
• 3*4 = 3*22 = 3<<2 => 12
x / 2y == x >> y
• 13/4 = 13/22 = 13>>2 => 3
x % 2y == x & (2y-1)
• 13%4 = 13%22 = 13&(22-1)
= 13&3 => 1
28
Fast way to multiply
by a power of 2
Fast way to divide
by a power of 2
Fast way to mod
by a power of 2
13 1101B
& 3 & 0011B
-- ----
1 0001B
29
Aside: Example C Program
#include <stdio.h>
#include <stdlib.h>
int main(void)
{ unsigned int n;
unsigned int count;
printf("Enter an unsigned integer: ");
if (scanf("%u", &n) != 1)
{ fprintf(stderr, "Error: Expect unsigned int.n");
exit(EXIT_FAILURE);
}
for (count = 0; n > 0; n = n >> 1)
count += (n & 1);
printf("%un", count);
return 0;
}
What does it
write?
How could this be
expressed more
succinctly?
Agenda
Number Systems
Finite representation of unsigned integers
Finite representation of signed integers
Finite representation of rational numbers (if time)
30
Signed Magnitude
31
Integer Rep
-7 1111
-6 1110
-5 1101
-4 1100
-3 1011
-2 1010
-1 1001
-0 1000
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
Definition
High-order bit indicates sign
0 => positive
1 => negative
Remaining bits indicate magnitude
1101B = -101B = -5
0101B = 101B = 5
Signed Magnitude (cont.)
32
Integer Rep
-7 1111
-6 1110
-5 1101
-4 1100
-3 1011
-2 1010
-1 1001
-0 1000
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
Computing negative
neg(x) = flip high order bit of x
neg(0101B) = 1101B
neg(1101B) = 0101B
Pros and cons
+ easy for people to understand
+ symmetric
- two reps of zero
Ones’ Complement
33
Integer Rep
-7 1000
-6 1001
-5 1010
-4 1011
-3 1100
-2 1101
-1 1110
-0 1111
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
Definition
High-order bit has weight -7
1010B = (1*-7)+(0*4)+(1*2)+(0*1)
= -5
0010B = (0*-7)+(0*4)+(1*2)+(0*1)
= 2
Ones’ Complement (cont.)
34
Integer Rep
-7 1000
-6 1001
-5 1010
-4 1011
-3 1100
-2 1101
-1 1110
-0 1111
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
Computing negative
neg(x) = ~x
neg(0101B) = 1010B
neg(1010B) = 0101B
Pros and cons
+ symmetric
- two reps of zero
Computing negative (alternative)
neg(x) = 1111B - x
neg(0101B) = 1111B – 0101B
= 1010B
neg(1010B) = 1111B – 1010B
= 0101B
Two’s Complement
35
Integer Rep
-8 1000
-7 1001
-6 1010
-5 1011
-4 1100
-3 1101
-2 1110
-1 1111
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
Definition
High-order bit has weight -8
1010B = (1*-8)+(0*4)+(1*2)+(0*1)
= -6
0010B = (0*-8)+(0*4)+(1*2)+(0*1)
= 2
Two’s Complement (cont.)
36
Integer Rep
-8 1000
-7 1001
-6 1010
-5 1011
-4 1100
-3 1101
-2 1110
-1 1111
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
Computing negative
neg(x) = ~x + 1
neg(x) = onescomp(x) + 1
neg(0101B) = 1010B + 1 = 1011B
neg(1011B) = 0100B + 1 = 0101B
Pros and cons
- not symmetric
+ one rep of zero
Two’s Complement (cont.)
Almost all computers use two’s complement to represent
signed integers
Why?
• Arithmetic is easy
• Will become clear soon
Hereafter, assume two’s complement representation of
signed integers
37
Adding Signed Integers
38
11
3 0011B
+ 3 + 0011B
-- ----
6 0110B
111
7 0111B
+ 1 + 0001B
-- ----
-8 1000B
pos + pos pos + pos (overflow)
1111
3 0011B
+ -1 + 1111B
-- ----
2 10010B
pos + neg
11
-3 1101B
+ -2 + 1110B
-- ----
-5 11011B
neg + neg
1 1
-6 1010B
+ -5 + 1011B
-- ----
5 10101B
neg + neg (overflow)
How would you
detect overflow
programmatically?
Subtracting Signed Integers
39
1
22
3 0011B
- 4 - 0100B
-- ----
-1 1111B
3 0011B
+ -4 + 1100B
-- ----
-1 1111B
-5 1011B
- 2 - 0010B
-- ----
-7 1001B
111
-5 1011
+ -2 + 1110
-- ----
-7 11001
Perform subtraction
with borrows
Compute two’s comp
and add
or
Negating Signed Ints: Math
Question: Why does two’s comp arithmetic work?
Answer: [–b] mod 24 = [twoscomp(b)] mod 24
See Bryant & O’Hallaron book for much more info
40
[–b] mod 24
= [24 – b] mod 24
= [24 – 1 - b + 1] mod 24
= [(24 – 1 - b) + 1] mod 24
= [onescomp(b) + 1] mod 24
= [twoscomp(b)] mod 24
Subtracting Signed Ints: Math
And so:
[a – b] mod 24 = [a + twoscomp(b)] mod 24
See Bryant & O’Hallaron book for much more info
41
[a – b] mod 24
= [a + 24 – b] mod 24
= [a + 24 – 1 – b + 1] mod 24
= [a + (24 - 1 – b) + 1] mod 24
= [a + onescomp(b) + 1] mod 24
= [a + twoscomp(b)] mod 24
Shifting Signed Integers
Bitwise left shift (<< in C): fill on right with zeros
Bitwise arithmetic right shift: fill on left with sign bit
Results are mod 24
42
6 >> 1 => 3
-6 >> 1 => -3
3 << 1 => 6
-3 << 1 => -6
What is the effect
arithmetically?
What is the effect
arithmetically?
0011B 0110B
1101B -1010B
0110B 0011B
1010B 1101B
Shifting Signed Integers (cont.)
Bitwise logical right shift: fill on left with zeros
In C, right shift (>>) could be logical or arithmetic
• Not specified by C90 standard
• Compiler designer decides
Best to avoid shifting signed integers
43
6 >> 1 => 3
-6 >> 1 => 5
What is the effect
arithmetically???
0110B 0011B
1010B 0101B
Other Operations on Signed Ints
Bitwise NOT (~ in C)
• Same as with unsigned ints
Bitwise AND (& in C)
• Same as with unsigned ints
Bitwise OR: (| in C)
• Same as with unsigned ints
Bitwise exclusive OR (^ in C)
• Same as with unsigned ints
Best to avoid with signed integers
44
Agenda
Number Systems
Finite representation of unsigned integers
Finite representation of signed integers
Finite representation of rational numbers (if time)
45
Rational Numbers
Mathematics
• A rational number is one that can be expressed
as the ratio of two integers
• Infinite range and precision
Compute science
• Finite range and precision
• Approximate using floating point number
• Binary point “floats” across bits
46
IEEE Floating Point Representation
Common finite representation: IEEE floating point
• More precisely: ISO/IEEE 754 standard
Using 32 bits (type float in C):
• 1 bit: sign (0=>positive, 1=>negative)
• 8 bits: exponent + 127
• 23 bits: binary fraction of the form 1.ddddddddddddddddddddddd
Using 64 bits (type double in C):
• 1 bit: sign (0=>positive, 1=>negative)
• 11 bits: exponent + 1023
• 52 bits: binary fraction of the form
1.dddddddddddddddddddddddddddddddddddddddddddddddddddd
47
Floating Point Example
Sign (1 bit):
• 1 => negative
Exponent (8 bits):
• 10000011B = 131
• 131 – 127 = 4
Fraction (23 bits):
• 1.10110110000000000000000B
• 1 +
(1*2-1)+(0*2-2)+(1*2-3)+(1*2-4)+(0*2-5)+(1*2-6)+(1*2-7)
= 1.7109375
Number:
• -1.7109375 * 24 = -27.375
48
11000001110110110000000000000000
32-bit representation
Floating Point Warning
Decimal number system can
represent only some rational
numbers with finite digit count
• Example: 1/3
Binary number system can
represent only some rational
numbers with finite digit count
• Example: 1/5
Beware of roundoff error
• Error resulting from inexact
representation
• Can accumulate
49
Decimal Rational
Approx Value
.3 3/10
.33 33/100
.333 333/1000
...
Binary Rational
Approx Value
0.0 0/2
0.01 1/4
0.010 2/8
0.0011 3/16
0.00110 6/32
0.001101 13/64
0.0011010 26/128
0.00110011 51/256
...
Summary
The binary, hexadecimal, and octal number systems
Finite representation of unsigned integers
Finite representation of signed integers
Finite representation of rational numbers
Essential for proper understanding of
• C primitive data types
• Assembly language
• Machine language
50

More Related Content

Similar to 03_NumberSystems.pdf (20)

PPT
Number Systems and its effectiveness .ppt
MuhammadAdeel321
 
PPT
An introduction to the different number systems
hassanbokhari14
 
PPT
Number_Systems_Number base conversions.ppt
anushachalla14
 
PPT
Number_Systems decimal, binary, octal, and hexadecimal
Meenakshi Munjal
 
PPT
Number_Systems _binary_octal_hex_dec.ppt
ManoRanjani30
 
PPT
Number_Systems (2).ppt
nivedita murugan
 
PPTX
Unit-1 Digital Design and Binary Numbers:
Asif Iqbal
 
PPT
45196656565656565656565656565656565656566.ppt
Harshal Vaidya
 
PDF
Finite word length effects
PeriyanayagiS
 
PPT
Chapter 1 Digital Systems and Binary Numbers.ppt
AparnaDas827261
 
PPTX
EC8392 -DIGITAL ELECTRONICS -basics
C.Helen Sulochana
 
PPT
Mba ebooks
Edhole.com
 
PPT
Video lectures
Edhole.com
 
PPTX
Chapter 2.1 introduction to number system
ISMT College
 
PPTX
Digital Logic Design.pptx
AminaZahid16
 
PPTX
Okkkkk
Bilal Maqbool ツ
 
PPT
Number_System and Boolean Algebra in Digital System Design
Deepika rani sona
 
PPT
Chapter 02 Data Types
Nathan Yeung
 
PPT
Ch02_4web456489478465165489445156568.ppt
nemoo80nemoo90
 
PPTX
Chapter 1 digital design.pptx
AliaaTarek5
 
Number Systems and its effectiveness .ppt
MuhammadAdeel321
 
An introduction to the different number systems
hassanbokhari14
 
Number_Systems_Number base conversions.ppt
anushachalla14
 
Number_Systems decimal, binary, octal, and hexadecimal
Meenakshi Munjal
 
Number_Systems _binary_octal_hex_dec.ppt
ManoRanjani30
 
Number_Systems (2).ppt
nivedita murugan
 
Unit-1 Digital Design and Binary Numbers:
Asif Iqbal
 
45196656565656565656565656565656565656566.ppt
Harshal Vaidya
 
Finite word length effects
PeriyanayagiS
 
Chapter 1 Digital Systems and Binary Numbers.ppt
AparnaDas827261
 
EC8392 -DIGITAL ELECTRONICS -basics
C.Helen Sulochana
 
Mba ebooks
Edhole.com
 
Video lectures
Edhole.com
 
Chapter 2.1 introduction to number system
ISMT College
 
Digital Logic Design.pptx
AminaZahid16
 
Number_System and Boolean Algebra in Digital System Design
Deepika rani sona
 
Chapter 02 Data Types
Nathan Yeung
 
Ch02_4web456489478465165489445156568.ppt
nemoo80nemoo90
 
Chapter 1 digital design.pptx
AliaaTarek5
 

More from vijayapraba1 (14)

PPTX
HBase.pptx
vijayapraba1
 
PPTX
C10ComputerEngg.pptx
vijayapraba1
 
PDF
apacheairflow-160827123852.pdf
vijayapraba1
 
PPT
HDFS_architecture.ppt
vijayapraba1
 
PPTX
2 Discovery and Acquisition of Data1.pptx
vijayapraba1
 
PPTX
C6ModelingTestingFinalOutputs.pptx
vijayapraba1
 
PPT
C3Problems and Brainstorming.ppt
vijayapraba1
 
PPT
ch13_extsort.ppt
vijayapraba1
 
PPTX
logic gates ppt.pptx
vijayapraba1
 
PPTX
Combinational_Logic_Circuit_PPT.pptx
vijayapraba1
 
PPTX
DA-Module 1.pptx
vijayapraba1
 
PDF
logic gates ppt-180430044215.pdf
vijayapraba1
 
PDF
sequential circuits PPT.pdf
vijayapraba1
 
PPTX
Fundamentals of Programming Constructs.pptx
vijayapraba1
 
HBase.pptx
vijayapraba1
 
C10ComputerEngg.pptx
vijayapraba1
 
apacheairflow-160827123852.pdf
vijayapraba1
 
HDFS_architecture.ppt
vijayapraba1
 
2 Discovery and Acquisition of Data1.pptx
vijayapraba1
 
C6ModelingTestingFinalOutputs.pptx
vijayapraba1
 
C3Problems and Brainstorming.ppt
vijayapraba1
 
ch13_extsort.ppt
vijayapraba1
 
logic gates ppt.pptx
vijayapraba1
 
Combinational_Logic_Circuit_PPT.pptx
vijayapraba1
 
DA-Module 1.pptx
vijayapraba1
 
logic gates ppt-180430044215.pdf
vijayapraba1
 
sequential circuits PPT.pdf
vijayapraba1
 
Fundamentals of Programming Constructs.pptx
vijayapraba1
 
Ad

Recently uploaded (20)

PDF
AI-Driven IoT-Enabled UAV Inspection Framework for Predictive Maintenance and...
ijcncjournal019
 
PDF
SG1-ALM-MS-EL-30-0008 (00) MS - Isolators and disconnecting switches.pdf
djiceramil
 
PPTX
MSME 4.0 Template idea hackathon pdf to understand
alaudeenaarish
 
PPTX
Basics of Auto Computer Aided Drafting .pptx
Krunal Thanki
 
PDF
4 Tier Teamcenter Installation part1.pdf
VnyKumar1
 
PDF
Introduction to Ship Engine Room Systems.pdf
Mahmoud Moghtaderi
 
PPTX
Module2 Data Base Design- ER and NF.pptx
gomathisankariv2
 
PPTX
business incubation centre aaaaaaaaaaaaaa
hodeeesite4
 
PPTX
Water resources Engineering GIS KRT.pptx
Krunal Thanki
 
PDF
Zero carbon Building Design Guidelines V4
BassemOsman1
 
PDF
Zero Carbon Building Performance standard
BassemOsman1
 
PDF
勉強会資料_An Image is Worth More Than 16x16 Patches
NABLAS株式会社
 
PPTX
Information Retrieval and Extraction - Module 7
premSankar19
 
PDF
STUDY OF NOVEL CHANNEL MATERIALS USING III-V COMPOUNDS WITH VARIOUS GATE DIEL...
ijoejnl
 
PDF
Machine Learning All topics Covers In This Single Slides
AmritTiwari19
 
PDF
20ME702-Mechatronics-UNIT-1,UNIT-2,UNIT-3,UNIT-4,UNIT-5, 2025-2026
Mohanumar S
 
PDF
Natural_Language_processing_Unit_I_notes.pdf
sanguleumeshit
 
PPTX
22PCOAM21 Session 1 Data Management.pptx
Guru Nanak Technical Institutions
 
PPTX
ENSA_Module_7.pptx_wide_area_network_concepts
RanaMukherjee24
 
PPTX
ETP Presentation(1000m3 Small ETP For Power Plant and industry
MD Azharul Islam
 
AI-Driven IoT-Enabled UAV Inspection Framework for Predictive Maintenance and...
ijcncjournal019
 
SG1-ALM-MS-EL-30-0008 (00) MS - Isolators and disconnecting switches.pdf
djiceramil
 
MSME 4.0 Template idea hackathon pdf to understand
alaudeenaarish
 
Basics of Auto Computer Aided Drafting .pptx
Krunal Thanki
 
4 Tier Teamcenter Installation part1.pdf
VnyKumar1
 
Introduction to Ship Engine Room Systems.pdf
Mahmoud Moghtaderi
 
Module2 Data Base Design- ER and NF.pptx
gomathisankariv2
 
business incubation centre aaaaaaaaaaaaaa
hodeeesite4
 
Water resources Engineering GIS KRT.pptx
Krunal Thanki
 
Zero carbon Building Design Guidelines V4
BassemOsman1
 
Zero Carbon Building Performance standard
BassemOsman1
 
勉強会資料_An Image is Worth More Than 16x16 Patches
NABLAS株式会社
 
Information Retrieval and Extraction - Module 7
premSankar19
 
STUDY OF NOVEL CHANNEL MATERIALS USING III-V COMPOUNDS WITH VARIOUS GATE DIEL...
ijoejnl
 
Machine Learning All topics Covers In This Single Slides
AmritTiwari19
 
20ME702-Mechatronics-UNIT-1,UNIT-2,UNIT-3,UNIT-4,UNIT-5, 2025-2026
Mohanumar S
 
Natural_Language_processing_Unit_I_notes.pdf
sanguleumeshit
 
22PCOAM21 Session 1 Data Management.pptx
Guru Nanak Technical Institutions
 
ENSA_Module_7.pptx_wide_area_network_concepts
RanaMukherjee24
 
ETP Presentation(1000m3 Small ETP For Power Plant and industry
MD Azharul Islam
 
Ad

03_NumberSystems.pdf

  • 2. 2 For Your Amusement Question: Why do computer programmers confuse Christmas and Halloween? Answer: Because 25 Dec = 31 Oct -- http://www.electronicsweekly.com
  • 3. 3 Goals of this Lecture Help you learn (or refresh your memory) about: • The binary, hexadecimal, and octal number systems • Finite representation of unsigned integers • Finite representation of signed integers • Finite representation of rational numbers (if time) Why? • A power programmer must know number systems and data representation to fully understand C’s primitive data types Primitive values and the operations on them
  • 4. Agenda Number Systems Finite representation of unsigned integers Finite representation of signed integers Finite representation of rational numbers (if time) 4
  • 5. 5 The Decimal Number System Name • “decem” (Latin) => ten Characteristics • Ten symbols • 0 1 2 3 4 5 6 7 8 9 • Positional • 2945 ≠ 2495 • 2945 = (2*103) + (9*102) + (4*101) + (5*100) (Most) people use the decimal number system Why?
  • 6. The Binary Number System Name • “binarius” (Latin) => two Characteristics • Two symbols • 0 1 • Positional • 1010B ≠ 1100B Most (digital) computers use the binary number system Terminology • Bit: a binary digit • Byte: (typically) 8 bits 6 Why?
  • 7. Decimal-Binary Equivalence 7 Decimal Binary 0 0 1 1 2 10 3 11 4 100 5 101 6 110 7 111 8 1000 9 1001 10 1010 11 1011 12 1100 13 1101 14 1110 15 1111 Decimal Binary 16 10000 17 10001 18 10010 19 10011 20 10100 21 10101 22 10110 23 10111 24 11000 25 11001 26 11010 27 11011 28 11100 29 11101 30 11110 31 11111 ... ...
  • 8. Decimal-Binary Conversion Binary to decimal: expand using positional notation 8 100101B = (1*25)+(0*24)+(0*23)+(1*22)+(0*21)+(1*20) = 32 + 0 + 0 + 4 + 0 + 1 = 37
  • 9. Decimal-Binary Conversion Decimal to binary: do the reverse • Determine largest power of 2 ≤ number; write template • Fill in template 9 37 = (?*25)+(?*24)+(?*23)+(?*22)+(?*21)+(?*20) 37 = (1*25)+(0*24)+(0*23)+(1*22)+(0*21)+(1*20) -32 5 -4 1 100101B -1 0
  • 10. Decimal-Binary Conversion Decimal to binary shortcut • Repeatedly divide by 2, consider remainder 10 37 / 2 = 18 R 1 18 / 2 = 9 R 0 9 / 2 = 4 R 1 4 / 2 = 2 R 0 2 / 2 = 1 R 0 1 / 2 = 0 R 1 Read from bottom to top: 100101B
  • 11. The Hexadecimal Number System Name • “hexa” (Greek) => six • “decem” (Latin) => ten Characteristics • Sixteen symbols • 0 1 2 3 4 5 6 7 8 9 A B C D E F • Positional • A13DH ≠ 3DA1H Computer programmers often use the hexadecimal number system 11 Why?
  • 12. Decimal-Hexadecimal Equivalence 12 Decimal Hex 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 A 11 B 12 C 13 D 14 E 15 F Decimal Hex 16 10 17 11 18 12 19 13 20 14 21 15 22 16 23 17 24 18 25 19 26 1A 27 1B 28 1C 29 1D 30 1E 31 1F Decimal Hex 32 20 33 21 34 22 35 23 36 24 37 25 38 26 39 27 40 28 41 29 42 2A 43 2B 44 2C 45 2D 46 2E 47 2F ... ...
  • 13. Decimal-Hexadecimal Conversion Hexadecimal to decimal: expand using positional notation Decimal to hexadecimal: use the shortcut 13 25H = (2*161) + (5*160) = 32 + 5 = 37 37 / 16 = 2 R 5 2 / 16 = 0 R 2 Read from bottom to top: 25H
  • 14. Binary-Hexadecimal Conversion Observation: 161 = 24 • Every 1 hexadecimal digit corresponds to 4 binary digits Binary to hexadecimal Hexadecimal to binary 14 1010000100111101B A 1 3 DH Digit count in binary number not a multiple of 4 => pad with zeros on left A 1 3 DH 1010000100111101B Discard leading zeros from binary number if appropriate Is it clear why programmers often use hexadecimal?
  • 15. The Octal Number System Name • “octo” (Latin) => eight Characteristics • Eight symbols • 0 1 2 3 4 5 6 7 • Positional • 1743O ≠ 7314O Computer programmers often use the octal number system 15 Why?
  • 16. Decimal-Octal Equivalence 16 Decimal Octal 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 10 9 11 10 12 11 13 12 14 13 15 14 16 15 17 Decimal Octal 16 20 17 21 18 22 19 23 20 24 21 25 22 26 23 27 24 30 25 31 26 32 27 33 28 34 29 35 30 36 31 37 Decimal Octal 32 40 33 41 34 42 35 43 36 44 37 45 38 46 39 47 40 50 41 51 42 52 43 53 44 54 45 55 46 56 47 57 ... ...
  • 17. Decimal-Octal Conversion Octal to decimal: expand using positional notation Decimal to octal: use the shortcut 17 37O = (3*81) + (7*80) = 24 + 7 = 31 31 / 8 = 3 R 7 3 / 8 = 0 R 3 Read from bottom to top: 37O
  • 18. Binary-Octal Conversion Observation: 81 = 23 • Every 1 octal digit corresponds to 3 binary digits Binary to octal Octal to binary 18 001010000100111101B 1 2 0 4 7 5O Digit count in binary number not a multiple of 3 => pad with zeros on left Discard leading zeros from binary number if appropriate 1 2 0 4 7 5O 001010000100111101B Is it clear why programmers sometimes use octal?
  • 19. Agenda Number Systems Finite representation of unsigned integers Finite representation of signed integers Finite representation of rational numbers (if time) 19
  • 20. Unsigned Data Types: Java vs. C Java has type • int • Can represent signed integers C has type: • signed int • Can represent signed integers • int • Same as signed int • unsigned int • Can represent only unsigned integers To understand C, must consider representation of both unsigned and signed integers 20
  • 21. Representing Unsigned Integers Mathematics • Range is 0 to ∞ Computer programming • Range limited by computer’s word size • Word size is n bits => range is 0 to 2n – 1 • Exceed range => overflow Nobel computers with gcc217 • n = 32, so range is 0 to 232 – 1 (4,294,967,295) Pretend computer • n = 4, so range is 0 to 24 – 1 (15) Hereafter, assume word size = 4 • All points generalize to word size = 32, word size = n 21
  • 22. Representing Unsigned Integers On pretend computer 22 Unsigned Integer Rep 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 10 1010 11 1011 12 1100 13 1101 14 1110 15 1111
  • 23. Adding Unsigned Integers Addition Results are mod 24 23 11 7 0111B + 10 + 1010B -- ---- 1 10001B 1 3 0011B + 10 + 1010B -- ---- 13 1101B Start at right column Proceed leftward Carry 1 when necessary Beware of overflow How would you detect overflow programmatically?
  • 24. Subtracting Unsigned Integers Subtraction Results are mod 24 24 2 3 0011B - 10 - 1010B -- ---- 9 1001B 12 0202 10 1010B - 7 - 0111B -- ---- 3 0011B Start at right column Proceed leftward Borrow 2 when necessary Beware of overflow How would you detect overflow programmatically?
  • 25. Shifting Unsigned Integers Bitwise right shift (>> in C): fill on left with zeros Bitwise left shift (<< in C): fill on right with zeros Results are mod 24 25 10 >> 1 => 5 10 >> 2 => 2 5 << 1 => 10 3 << 2 => 12 What is the effect arithmetically? (No fair looking ahead) What is the effect arithmetically? (No fair looking ahead) 1010B 0101B 1010B 0010B 0101B 1010B 0011B 1100B
  • 26. Other Operations on Unsigned Ints Bitwise NOT (~ in C) • Flip each bit Bitwise AND (& in C) • Logical AND corresponding bits 26 ~10 => 5 10 1010B & 7 & 0111B -- ---- 2 0010B Useful for setting selected bits to 0 1010B 0101B
  • 27. Other Operations on Unsigned Ints Bitwise OR: (| in C) • Logical OR corresponding bits Bitwise exclusive OR (^ in C) • Logical exclusive OR corresponding bits 27 10 1010B | 1 | 0001B -- ---- 11 1011B Useful for setting selected bits to 1 10 1010B ^ 10 ^ 1010B -- ---- 0 0000B x ^ x sets all bits to 0
  • 28. Aside: Using Bitwise Ops for Arith Can use <<, >>, and & to do some arithmetic efficiently x * 2y == x << y • 3*4 = 3*22 = 3<<2 => 12 x / 2y == x >> y • 13/4 = 13/22 = 13>>2 => 3 x % 2y == x & (2y-1) • 13%4 = 13%22 = 13&(22-1) = 13&3 => 1 28 Fast way to multiply by a power of 2 Fast way to divide by a power of 2 Fast way to mod by a power of 2 13 1101B & 3 & 0011B -- ---- 1 0001B
  • 29. 29 Aside: Example C Program #include <stdio.h> #include <stdlib.h> int main(void) { unsigned int n; unsigned int count; printf("Enter an unsigned integer: "); if (scanf("%u", &n) != 1) { fprintf(stderr, "Error: Expect unsigned int.n"); exit(EXIT_FAILURE); } for (count = 0; n > 0; n = n >> 1) count += (n & 1); printf("%un", count); return 0; } What does it write? How could this be expressed more succinctly?
  • 30. Agenda Number Systems Finite representation of unsigned integers Finite representation of signed integers Finite representation of rational numbers (if time) 30
  • 31. Signed Magnitude 31 Integer Rep -7 1111 -6 1110 -5 1101 -4 1100 -3 1011 -2 1010 -1 1001 -0 1000 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 Definition High-order bit indicates sign 0 => positive 1 => negative Remaining bits indicate magnitude 1101B = -101B = -5 0101B = 101B = 5
  • 32. Signed Magnitude (cont.) 32 Integer Rep -7 1111 -6 1110 -5 1101 -4 1100 -3 1011 -2 1010 -1 1001 -0 1000 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 Computing negative neg(x) = flip high order bit of x neg(0101B) = 1101B neg(1101B) = 0101B Pros and cons + easy for people to understand + symmetric - two reps of zero
  • 33. Ones’ Complement 33 Integer Rep -7 1000 -6 1001 -5 1010 -4 1011 -3 1100 -2 1101 -1 1110 -0 1111 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 Definition High-order bit has weight -7 1010B = (1*-7)+(0*4)+(1*2)+(0*1) = -5 0010B = (0*-7)+(0*4)+(1*2)+(0*1) = 2
  • 34. Ones’ Complement (cont.) 34 Integer Rep -7 1000 -6 1001 -5 1010 -4 1011 -3 1100 -2 1101 -1 1110 -0 1111 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 Computing negative neg(x) = ~x neg(0101B) = 1010B neg(1010B) = 0101B Pros and cons + symmetric - two reps of zero Computing negative (alternative) neg(x) = 1111B - x neg(0101B) = 1111B – 0101B = 1010B neg(1010B) = 1111B – 1010B = 0101B
  • 35. Two’s Complement 35 Integer Rep -8 1000 -7 1001 -6 1010 -5 1011 -4 1100 -3 1101 -2 1110 -1 1111 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 Definition High-order bit has weight -8 1010B = (1*-8)+(0*4)+(1*2)+(0*1) = -6 0010B = (0*-8)+(0*4)+(1*2)+(0*1) = 2
  • 36. Two’s Complement (cont.) 36 Integer Rep -8 1000 -7 1001 -6 1010 -5 1011 -4 1100 -3 1101 -2 1110 -1 1111 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 Computing negative neg(x) = ~x + 1 neg(x) = onescomp(x) + 1 neg(0101B) = 1010B + 1 = 1011B neg(1011B) = 0100B + 1 = 0101B Pros and cons - not symmetric + one rep of zero
  • 37. Two’s Complement (cont.) Almost all computers use two’s complement to represent signed integers Why? • Arithmetic is easy • Will become clear soon Hereafter, assume two’s complement representation of signed integers 37
  • 38. Adding Signed Integers 38 11 3 0011B + 3 + 0011B -- ---- 6 0110B 111 7 0111B + 1 + 0001B -- ---- -8 1000B pos + pos pos + pos (overflow) 1111 3 0011B + -1 + 1111B -- ---- 2 10010B pos + neg 11 -3 1101B + -2 + 1110B -- ---- -5 11011B neg + neg 1 1 -6 1010B + -5 + 1011B -- ---- 5 10101B neg + neg (overflow) How would you detect overflow programmatically?
  • 39. Subtracting Signed Integers 39 1 22 3 0011B - 4 - 0100B -- ---- -1 1111B 3 0011B + -4 + 1100B -- ---- -1 1111B -5 1011B - 2 - 0010B -- ---- -7 1001B 111 -5 1011 + -2 + 1110 -- ---- -7 11001 Perform subtraction with borrows Compute two’s comp and add or
  • 40. Negating Signed Ints: Math Question: Why does two’s comp arithmetic work? Answer: [–b] mod 24 = [twoscomp(b)] mod 24 See Bryant & O’Hallaron book for much more info 40 [–b] mod 24 = [24 – b] mod 24 = [24 – 1 - b + 1] mod 24 = [(24 – 1 - b) + 1] mod 24 = [onescomp(b) + 1] mod 24 = [twoscomp(b)] mod 24
  • 41. Subtracting Signed Ints: Math And so: [a – b] mod 24 = [a + twoscomp(b)] mod 24 See Bryant & O’Hallaron book for much more info 41 [a – b] mod 24 = [a + 24 – b] mod 24 = [a + 24 – 1 – b + 1] mod 24 = [a + (24 - 1 – b) + 1] mod 24 = [a + onescomp(b) + 1] mod 24 = [a + twoscomp(b)] mod 24
  • 42. Shifting Signed Integers Bitwise left shift (<< in C): fill on right with zeros Bitwise arithmetic right shift: fill on left with sign bit Results are mod 24 42 6 >> 1 => 3 -6 >> 1 => -3 3 << 1 => 6 -3 << 1 => -6 What is the effect arithmetically? What is the effect arithmetically? 0011B 0110B 1101B -1010B 0110B 0011B 1010B 1101B
  • 43. Shifting Signed Integers (cont.) Bitwise logical right shift: fill on left with zeros In C, right shift (>>) could be logical or arithmetic • Not specified by C90 standard • Compiler designer decides Best to avoid shifting signed integers 43 6 >> 1 => 3 -6 >> 1 => 5 What is the effect arithmetically??? 0110B 0011B 1010B 0101B
  • 44. Other Operations on Signed Ints Bitwise NOT (~ in C) • Same as with unsigned ints Bitwise AND (& in C) • Same as with unsigned ints Bitwise OR: (| in C) • Same as with unsigned ints Bitwise exclusive OR (^ in C) • Same as with unsigned ints Best to avoid with signed integers 44
  • 45. Agenda Number Systems Finite representation of unsigned integers Finite representation of signed integers Finite representation of rational numbers (if time) 45
  • 46. Rational Numbers Mathematics • A rational number is one that can be expressed as the ratio of two integers • Infinite range and precision Compute science • Finite range and precision • Approximate using floating point number • Binary point “floats” across bits 46
  • 47. IEEE Floating Point Representation Common finite representation: IEEE floating point • More precisely: ISO/IEEE 754 standard Using 32 bits (type float in C): • 1 bit: sign (0=>positive, 1=>negative) • 8 bits: exponent + 127 • 23 bits: binary fraction of the form 1.ddddddddddddddddddddddd Using 64 bits (type double in C): • 1 bit: sign (0=>positive, 1=>negative) • 11 bits: exponent + 1023 • 52 bits: binary fraction of the form 1.dddddddddddddddddddddddddddddddddddddddddddddddddddd 47
  • 48. Floating Point Example Sign (1 bit): • 1 => negative Exponent (8 bits): • 10000011B = 131 • 131 – 127 = 4 Fraction (23 bits): • 1.10110110000000000000000B • 1 + (1*2-1)+(0*2-2)+(1*2-3)+(1*2-4)+(0*2-5)+(1*2-6)+(1*2-7) = 1.7109375 Number: • -1.7109375 * 24 = -27.375 48 11000001110110110000000000000000 32-bit representation
  • 49. Floating Point Warning Decimal number system can represent only some rational numbers with finite digit count • Example: 1/3 Binary number system can represent only some rational numbers with finite digit count • Example: 1/5 Beware of roundoff error • Error resulting from inexact representation • Can accumulate 49 Decimal Rational Approx Value .3 3/10 .33 33/100 .333 333/1000 ... Binary Rational Approx Value 0.0 0/2 0.01 1/4 0.010 2/8 0.0011 3/16 0.00110 6/32 0.001101 13/64 0.0011010 26/128 0.00110011 51/256 ...
  • 50. Summary The binary, hexadecimal, and octal number systems Finite representation of unsigned integers Finite representation of signed integers Finite representation of rational numbers Essential for proper understanding of • C primitive data types • Assembly language • Machine language 50