floating point review & datalab feedback

31
Floating Point Review & Datalab feedback 2011. 9.27 최 최 최

Upload: chika

Post on 23-Feb-2016

55 views

Category:

Documents


0 download

DESCRIPTION

Floating Point Review & Datalab feedback. 2011. 9.27 최 윤 정. Floating Point Review. Basics Sign, Mantissa, Exponent Round to even Bias Infinity, +- zero, NaN Normalized vs. Denormalized. 11011100. 15. 10010111. 10010101. 10000101. 13/4. 56. 11100000. Infinity. 1/128. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Floating Point Review & Datalab  feedback

Floating Point Review &Datalab feedback

2011. 9.27최 윤 정

Page 2: Floating Point Review & Datalab  feedback

Floating Point Review• Basics– Sign, Mantissa, Exponent– Round to even– Bias– Infinity, +- zero, NaN– Normalized vs. Denormalized

Page 3: Floating Point Review & Datalab  feedback
Page 4: Floating Point Review & Datalab  feedback
Page 5: Floating Point Review & Datalab  feedback
Page 6: Floating Point Review & Datalab  feedback
Page 7: Floating Point Review & Datalab  feedback

10010 111110 11100 15100 10101 10000 101 13/4

56Infinity11100000 1/128 01000 000 1/128

Page 8: Floating Point Review & Datalab  feedback
Page 9: Floating Point Review & Datalab  feedback
Page 10: Floating Point Review & Datalab  feedback

Round-to-even examples• Represent 25/64 with 4 exponent bits, 3 fraction bits. Bias is 2(4-1) –

1 = 7– 0101 100: Rounded DOWN to value 3/8

• Represent 27/64 with 4 exponent bits, 3 fraction bits– 0101 110: Rounded UP to value 7/16

• Represent 51/128 with 4 exponent bits, 3 fraction bits– 0101 101: Rounded UP to value 13/32

– Didn’t use round-to-even on this… it wasn’t a “tie”

Page 11: Floating Point Review & Datalab  feedback

Datalab Tricks• Basics–>>, <<– | vs. ||– & vs. &&– ! vs. ~

• What is x?– int x = (9 | 12) << 1;– x = 26

Page 12: Floating Point Review & Datalab  feedback

Datalab Tricks

Page 13: Floating Point Review & Datalab  feedback

Datalab Tricks• Trick #1: Signed-ness– The MOST significant bit

• 0 -> positive or zero• 1 -> negative

– What is…• int x = (10 >> 31);• int y = (-10 >> 31);

– It’s NOT 1 (what is arithmetic shifting?)– How do we fix that?

– Answers:• x = 0 and y = -1

Page 14: Floating Point Review & Datalab  feedback

Datalab Tricks• Trick #2: Properties of Zero– Masking

• 0 & (something) == 0 [why?]• (0-1) & (something) == something [why?]• Why is this useful?

– Positive zero vs. negative zero• int x = 0; int y = -x;• Neither x nor y is negative (MSB is 0 for both)• Why is this useful?

Page 15: Floating Point Review & Datalab  feedback

Datalab Tricks• Trick #3: Negation– Review: take a 5-bit twos compliment system

1 0 0 1 0-24

23 2122 20

-16 + 2 = -14

Page 16: Floating Point Review & Datalab  feedback

Datalab Tricks• Trick #3: Negation– Review: take a 5-bit twos compliment system

0 1 1 1 0-24

23 2122 20

8+ 4 + 2 = 14

Page 17: Floating Point Review & Datalab  feedback

Datalab Tricks• Trick #3: Negation– Example:

1 0 0 1 0 int x = -14; // -14

0 1 1 0 1 int y = ~x; // 13

0 1 1 1 0 int z = ~x+1; // 14

Page 18: Floating Point Review & Datalab  feedback

Datalab Tricks• Trick #3: Negation– In general-x == (~x + 1)

– Does this always work?• Tmin?

– No!• Tmax?

– Yes!• Zero?

– Yes!• Everything else?

– Yes!

Page 19: Floating Point Review & Datalab  feedback

Integer Puzzles

Page 20: Floating Point Review & Datalab  feedback

Integer Puzzles• (x < 0) => ((x*2) < 0)– Nope. Tmin?

• (ux >= 0)– Yup!

• (x&7 == 7) => ((x << 30) < 0)– Yup!– (x&7 == 7) means last 3 bits are 1– Examine the “negative bit” of (x<<30)

Page 21: Floating Point Review & Datalab  feedback

Integer Puzzles• (ux > -1)– Nope. Unsigned comparison means -1 is Umax!

• (x > y) => (-x < -y)– Nope. Boundary cases.– x = 0, y = Tmin (what is -Tmin?)

• (x*x >= 0)– Nope. Overflow into “negative bit”– int x = 65535; // 2^16 - 1

Page 22: Floating Point Review & Datalab  feedback

Integer Puzzles• (x > 0 && y > 0) => (x + y > 0)– Nope. Overflow into “negative bit”– x, y = Tmax

• (x >= 0) => (-x <= 0)– Yup! Why doesn’t break for Tmax?

• (x <= 0) => (-x >= 0)– Nope. What is –Tmin?

Page 23: Floating Point Review & Datalab  feedback

Integer Puzzles• (x|-x) >> 31 == -1– Nope. x = 0

• (ux >> 3) == (ux / 8)– Yup!

• (x >> 3) == (x / 8)– Nope. Careful on rounding!– int x = -19;– int y = x >> 3; // y = -3– int z = x / 8; // z = -2

Page 24: Floating Point Review & Datalab  feedback

Integer Puzzles• (x & (x-1)) != 0– Nope. x = 0, x = 1

Page 25: Floating Point Review & Datalab  feedback

Parity Example• Write a function which takes an integer

and returns– 1 if there are an odd number of ‘1’ bits– 0 if there are an even number of ‘1’ bits

int parity_check(int x){…

}

• Any ideas?

Page 26: Floating Point Review & Datalab  feedback

Parity Example• Inspiration:– If we could XOR all of the bits in the argu-

ment… we would get the answer!

1101100101100011111001010010110111011001011000111110010100101101

11011001011000111110010100101101XOR

0011110001001110 (down to 16 bits)

Page 27: Floating Point Review & Datalab  feedback

Parity Example• Just keep going!

00111100010011100011110001001110

0011110001001110XOR

01110010 (down to 8 bits)

Page 28: Floating Point Review & Datalab  feedback

Parity Example• Just keep going!

0111001001110010

01110010XOR

0101 (down to 4 bits)

Page 29: Floating Point Review & Datalab  feedback

Parity Example• You can take it from there.– Still confused on high-level algorithm? – Can’t write the C code for the Parity Prob-

lem?– Study more.!

Page 30: Floating Point Review & Datalab  feedback

Warning.!!

• Autolab isn’t the whole grade.

• I read your code.!!– dlc error & warning – Bit 연산자 문법을 사용하지 않거나 문법오류

Page 31: Floating Point Review & Datalab  feedback

Good code StyleStyle• Documentation• Whitespace• Line length• Variable names• Magic Numbers• Dead Code• Modularity• Error checking• Consistency

http://www.cs.cmu.edu/~213/codeStyle.html