Data types and their representation Jordi Cortadella Department of Computer Science

Preview:

Citation preview

Data types and their representation

Jordi CortadellaDepartment of Computer Science

Outline

• Data representation

• Boolean expressions

• Real numbers

Introduction to Programming © Dept. CS, UPC 2

The memory

0 0 1 0 0 1 0 0 1 1 1 0 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 1 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 10 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 1 1 0 1 0 0 1 0 1 0 1 0 0 0 01 0 0 1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 00 0 1 0 0 1 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 11 1 0 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 00 1 0 1 0 1 0 1 0 1 0 0 0 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 10 0 1 0 1 0 0 0 1 0 0 1 0 1 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 1 1 00 1 1 1 0 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 1 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 1 0 0 0 1 0 00 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1

• • •

• • • Address

1036104010441048105210561060106410681072107610801084

byte

int

19

0

H e l lo w or l d

string(“Hello world”)

Introduction to Programming © Dept. CS, UPC 3

How much memory do we have?Our laptop has few Gbytes of memory:

Introduction to Programming © Dept. CS, UPC 4

Number representation

2100 10 1

1 7 base 10

325 5 1

3 21125

base 5

09 3 1

0 1227

281

base 3

04 2 1

0 118

116

0113264128

base 2

CCXVII Roman

Introduction to Programming © Dept. CS, UPC 5

1

Write the binary representation

Design a procedure that, given a number n, writes its binary representation (in reverse order).

// Pre: n 0// Writes the binary representation of n// in reverse order.void base2(int n);

04 2 1

0 118

116

0113264128

Write: 10011011

0 011011

n%2n/2

Introduction to Programming © Dept. CS, UPC 6

Write the binary representation// Pre: n 0// Writes the binary representation of n// in reverse order.

void base2(int n) { while (n > 1) { cout << n%2; n = n/2; } cout << n << endl;}

n cout217 1108 0

54 027 113 1

6 03 11 1

Introduction to Programming © Dept. CS, UPC 7

ExerciseDesign a procedure that, given a number n and a base b, writes the representation of n in base b(in reverse order).

// Pre: n 0, 2 b 9.// Writes the binary representation of n// in base b (in reverse order).void base(int n, int b);

Introduction to Programming © Dept. CS, UPC 8

Boolean expressions

Introduction to Programming © Dept. CS, UPC 9

Boolean Algebra

George Boole, 1815-1864

Introduction to Programming © Dept. CS, UPC 10

Maximum of three numbers// Returns max(a, b, c)int max3(int a, int b, int c);

a > banda > c

a

b

b > c

c

else

a,b,c

else

b,c

a >= band

a >= c

a

b c

else

b >= c

else

a,b,c

b,c

Introduction to Programming © Dept. CS, UPC 11

Maximum of three numbers// Returns max(a, b, c)int max3(int a, int b, int c) { if (a > b and a > c) { return a; } else { if (b > c) { return b; } else { return c; } }}

Choosebetweenb and c

a > banda > ca

b

b > c

c

else

a,b,c

else

b,c

Introduction to Programming © Dept. CS, UPC 12

Maximum of three numbers

// Returns max(a, b, c)int max3(int a, int b, int c) { if (a > b and a > c) return a; if (b > c) return b; return c;}

Introduction to Programming © Dept. CS, UPC 13

Boolean operators

if (a > b and a > c) …

while (i >= 10 or c == 0) …

if (not (a < b and a < c)) …

Introduction to Programming © Dept. CS, UPC 14

Truth tables

a b a and bfalse false falsefalse true falsetrue false falsetrue true true

a b a or bfalse false falsefalse true truetrue false truetrue true true

a not afalse truetrue false

Introduction to Programming © Dept. CS, UPC 15

Boolean expressions

-3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13

x > 2 and x < 7

-3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13

… …

x >= 3 and x <= 6

x <= 2 or x > 7

-3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13

…x <= 2 not (x <= 2) x > 2

-3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13

?x == 5

x

Introduction to Programming © Dept. CS, UPC 16

Boolean expressions

-3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13

x > 2 and x < 7

-3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13

… …

x >= 3 and x <= 6

x <= 2 or x > 7

-3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13

…x <= 2 not (x <= 2) x > 2

-3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13

not (x == 5) x != 5……

Introduction to Programming © Dept. CS, UPC 17

Exercise

-3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13

x == 0 or x == 6

Introduction to Programming © Dept. CS, UPC 18

Exercise

-3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13

x == 0 or x > 5

Introduction to Programming © Dept. CS, UPC 19

Exercise

-3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13

x%2 == 0

……

Introduction to Programming © Dept. CS, UPC 20

Exercise

-3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13

(x > -1 and x < 3) or(x >= 6 and x < 11)

Introduction to Programming © Dept. CS, UPC 21

Complement of and/or

-3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13

……

(x > 2 and x < 7)

not (x > 2 and x < 7)

x <= 2 or x >= 7

not not

De Morgan’s lawIntroduction to Programming © Dept. CS, UPC 22

De Morgan’s law

not (e1 and e2) not e1 or not e2

not (e1 or e2) not e1 and not e2

Exercise

Simplify: not (x >= y or y%2 == 0)

x < y and y%2 != 0

Introduction to Programming © Dept. CS, UPC 23

Operator precedence

a + bc (a + b)c

a or b and c (a or b) and c

Introduction to Programming © Dept. CS, UPC 24

Real numbers

Introduction to Programming © Dept. CS, UPC 25

Intersection of circles

x1, y1, r1 x2, y2, r2

• Write a program that reads the center and the radius of two circles and prints “yes” or “no” depending on whether they intersect or not.

• Example:

2 5.3 1.34 0 0 2 no 1.5 2.5 10 0.5 3.6 4.3 yes

Introduction to Programming © Dept. CS, UPC 26

Intersection of circles

(

(𝑟1 𝑟2

Circles intersect if and only if the distance betweencenters is smaller than or equal to the sum of radii.

Introduction to Programming © Dept. CS, UPC 27

Intersection of circles

(

(𝑟1 𝑟2

√ (𝑥1−𝑥2 )2+( 𝑦1−𝑦 2)2≤𝑟1+𝑟 2

(𝑥1−𝑥2 )2+( 𝑦1−𝑦 2 )2≤ (𝑟1+𝑟2 )2

Introduction to Programming © Dept. CS, UPC 28

// Reads the center and radius of two circles// and prints whether they intersect or not.int main() { double x1, y1, r1, x2, y2, r2; // Real numbers cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2;

double dx = x1 – x2; dx = dxdx; // (x1 – x2)^2 double dy = y1 – y2; dy = dydy; // (y1 – y2)^2 double r = r1 + r2; r = rr; // (r1 + r2)^2

bool intersect = dx + dy <= r; // true or false

if (intersect) cout << "yes" << endl; else cout << "no" << endl;}

Intersection of circles

Introduction to Programming © Dept. CS, UPC 29

Boolean variablesbool b = false;b = i <= n; // true if i <= n, false if i > nb = x + y > z;b = (i < 10) and (j >= 20);b = (large and not found) or (x > y);b = true;

if (b) { … } // if (b == true) { … }

while (not b) {…} // while (b == false) { … }

Introduction to Programming © Dept. CS, UPC 30

Real numbers• Two types:

– float (single precision, 32 bits)– double (double precision, 64 bits)

• Arithmetic operations: + - / (no remainder)

• Real constants:2 -5.003 3.1416 1.4e9 0.6E-15

1.4 0.6 Introduction to Programming © Dept. CS, UPC 31

© Dept. CS, UPC 32

Type conversion

• Arithmetic operations between integer and real values usually imply an implicit type conversion.

• Be careful:

int i=3, j=2; double x; x = i/j; // x = 1.0 x = i/double(j); // x = 1.5 x = double(i)/j; // x = 1.5 x = double(i/j); // x = 1.0 x = i/2; // x = 1.0 x = i/2.0; // x = 1.5

i = x; // i = 1 j = 3.14159265; // j = 3

Introduction to Programming

// Returns x2

double sq(double x) { return xx;}

// Reads the center and radius of two circles// and prints whether they intersect or not.int main() { double x1, y1, r1, x2, y2, r2; cin >> x1 >> y1 >> r1 >> x2 >> y2 >> r2;

if (sq(x1 – x2) + sq(y1 – y2) <= sq(r1 + r2)) cout << "yes"; else cout << "no";

cout << endl;}

Revisiting intersection of circles

Introduction to Programming © Dept. CS, UPC 33

Summary• Variables are stored in memory locations and

internally represented as bit vectors.

• Boolean expressions and variables:– Can take two values: true or false.– Use negative thinking when simpler than positive

thinking (apply De Morgan’s law).

• Real values:– Can be represented with a limited precision.– Be careful with int double conversions.

Introduction to Programming © Dept. CS, UPC 34

Recommended