Negative Bit Representation in Computer Science

 
1
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
16.
Range of Two’s Complement Values #1
17.
Range of Two’s Complement Values #2
18.
Range of Two’s Complement Values #3
19.
Range of Two’s Complement Values #4
20.
Range of Two’s Complement Values #5
21.
Overflow #1
22.
Overflow #2
23.
Underflow #1
24.
Underflow #2
25.
Overflow Example #1
26.
Overflow Example #2
 
1.
Negative Bit Representation Outline
2.
Negative Integers
3.
Representing Negativity #1
4.
Representing Negativity #2
5.
Which Bit for the Sign?
6.
Sign-Value
7.
Disadvantages of Sign-Value
8.
One’s Complement
9.
Disadvantages of One’s Complement
10.
Two’s Complement
11.
Advantages of Two’s Complement #1
12.
Advantages of Two’s Complement #2
13.
Advantages of Two’s Complement #3
14.
Advantages of Two’s Complement #4
15.
Advantages of Two’s Complement #5
 
Negative Bit Representation Outline
 
2
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
In the first slide packet on binary representation,
we saw how non-negative integer values like 97
are represented in memory.
What if, instead of having 97, we had -97?
We need a way to represent negative integers.
 
Negative Integers
 
3
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
For starters, we need a way to represent
whether an integer is negative or positive or zero.
We can think of this as a binary question:
a number is either negative or 
non-negative
.
So, we could add an extra bit to every byte in RAM,
to represent the sign (negative or non-negative).
Of course, then we’d have 9-bit bytes, and computer hardware
much prefers numbers of components that are powers of 2.
Plus, we’d need extra circuitry in our CPUs to properly do the
calculations with negative numbers, which would cost more.
So, this isn’t a good solution.
 
Representing Negativity #1
 
Representing Negativity #2
 
For starters, we need a way to represent
whether an integer is negative or positive or zero.
We can think of this as a binary question:
a number is either negative or 
non-negative
.
We’ve already decided that we don’t want to have
an additional bit whose only role is to represent the sign.
So, we can simply pick a bit in the binary representation of
the integer and decide that it’s going to be the sign bit.
Which bit should we pick?
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
4
 
5
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
Which bit should we pick to represent the sign?
Well, we want to pick the bit that we’re least likely to use
in real life, so that it’s not a big waste to use it as a sign bit.
In real life, we’re much more likely to deal with
very small numbers (for example, 0, 1, 13, 97) than
very large numbers (for example, 4001431453).
So, we pick the leftmost bit, called the 
most significant bit
,
and decide that it’ll be our sign bit –
because that’s the bit that we’ll miss the least.
 
Which Bit for the Sign?
 
6
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
Okay, now we have our sign bit.
Here is the first of three ways to represent negative integers.
1.
 
Sign-Value
: To get the negative version of
a positive number, set the sign bit to 1,
and leave all the other bits unchanged:
 
Sign-Value
 
7
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
An unfortunate feature of Sign-Value representation is that
there are two ways of representing the value zero:
all bits set to zero, and all bits except the sign bit set to zero.
 
 
 
This makes the math a bit confusing.
More importantly, when performing arithmetic operations,
we need to treat negative operands as special cases.
So, our CPU needs a lot more circuitry to do arithmetic,
which can be expensive.
 
Disadvantages of Sign-Value
 
8
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
2.
 
One’s Complement
: To get the negative version of
a positive number, invert (
complement
) all bits;
that is, all 1’s become 0’s and vice versa.
 
One’s Complement
 
9
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
An unfortunate feature of One’s Complement representation
is that there are two ways of representing the value zero:
all bits set to zero, and all bits set to one.
 
 
 
This makes the math a bit confusing.
More importantly, when performing arithmetic operations,
we need to treat negative operands as special cases.
So, our CPU needs a lot more circuitry to do arithmetic,
which can be expensive.
 
Disadvantages of One’s Complement
 
10
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
+ 1
 
3.
 
Two’s Complement
: To get the negative version of
a positive number, invert all bits 
and then add 1
.
If the addition causes a 
carry
 
bit
past the most significant bit, then discard the high carry:
 
Two’s Complement
 
11
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
Discard the high carry.
 
In Two’s Complement representation, the value zero is
uniquely represented by having all bits set to zero:
 
Advantages of Two’s Complement #1
 
12
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
In Two’s Complement representation, when you perform
an arithmetic operation (for example, addition, subtraction,
multiplication, division) on two signed integers, you can use
exactly the same method
 as if you had two unsigned integers
(that is, non-negative integers with no sign bit) ...
EXCEPT
, you throw away the high carry
(or the high 
borrow
 
for subtraction).
So, the only extra capabilities you need are:
a.
flipping all the bits (which it turns out you need for other things);
b.
throwing away the high carry (or the high borrow).
That’s 
MUCH CHEAPER
 than the extra circuitry needed for
Sign-Magnitude or One’s Complement.
 
Advantages of Two’s Complement #2
 
13
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
This property of Two’s Complement representation
is so incredibly handy that
virtually every general-purpose computer available today
uses Two’s Complement.
Why?
Because, with Two’s Complement,
we don’t need special algorithms (and therefore extra circuitry)
for arithmetic operations that involve negative values.
 
Advantages of Two’s Complement #3
 
14
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
1
 
Using Two’s Complement to do arithmetic:
 
Advantages of Two’s Complement #4
 
15
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
1
 
Using Two’s Complement to do arithmetic:
 
Advantages of Two’s Complement #5
 
16
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
When we represent negative integers in Two’s Complement
notation, the range of numbers that can be represented in
b 
bits is:
−(2
b
−1
) . . . (+2
b
−1
 − 1)
For example, the range of numbers that can be represented in
8 bits is:
−(2
7
) . . . (+2
7
 − 1)  = −128 . . . 127
Likewise, the range of numbers that can be represented in
16 bits is:
−(2
15
) . . . (+2
15
 − 1)  =  −32,768 . . . 32,767
 
How do we know this?
 
Range of Two’s Complement Values #1
 
17
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
When we represent negative integers in Two’s Complement
notation, the range of numbers that can be represented
in 
b 
bits is:
−(2
b
−1
) . . . (+2
b
−1
 − 1)
How do we know this?
Here’s the biggest number that can be represented in 16 bits:
 
If we add one to it, we get:
 
But this number is negative (that is, it has a 1 in the sign bit).
So, mathematically, it’s 
smaller
 than the previous number,
not bigger, and therefore the previous number is the biggest.
 
Range of Two’s Complement Values #2
 
18
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
Here’s the biggest number that can be represented in 16 bits:
 
If we add one to it, we get:
 
But this number is negative.
If this number were “unsigned”, then it’d be 2
15
, which is 2
16-1
,
which is 2
b
-1
, where 
b
 (the number of bits) is 16.
Therefore, the largest number that can be represented in 
b
 bits
in Two’s Complement must be 2
b
-1
-1.
 
Range of Two’s Complement Values #3
 
19
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
-(2
b-1
 
-
 
1) =
 
+ 1
 
~(2
b-1
 
-
 
1) =
 
So what’s the smallest negative integer (that is,
the negative integer with the greatest absolute value)?
Well, can we represent the negative of 2
b
−1
 − 1?
 
Range of Two’s Complement Values #4
 
20
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
We can represent –(2
b
−1
 − 1).
So, can we represent the negative of –(2
b
−1
)?
 
 
 
 
 
Since the sign didn’t change, it worked!
But, if we tried subtracting again, we’d borrow and
the sign would change, indicating failure.
So, –(2
b
−1
) is the lowest number that can be represented (that is,
the negative number with the highest absolute value).
 
Range of Two’s Complement Values #5
 
21
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
When we’re working with a value that’s near the upper limit
of what can be represented in Two’s Complement for the
given number of bits, we sometimes perform an operation
that should result in a positive value but instead produces
a negative value.
Such an event is called 
overflow
.
 
Overflow #1
 
22
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
Consider the following addition in 8-bit Two’s Complement
representation:
 
 
 
 
 
Notice that the result should be +128,
but because the  leftmost bit is 1, it’s actually -128.
This is 
overflow
: an arithmetic operation that should have
a positive result goes over the top to become negative.
 
Overflow #2
 
23
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
When we’re working with a value that’s near the lower limit
of what can be represented in Two’s Complement for the
given number of bits, we sometimes perform an operation
that should result in a negative value but instead produces
a positive value.
Such an event is called 
underflow
.
 
Underflow #1
 
24
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
- 1
 
- 1
 
Consider the following addition in 8-bit Two’s Complement
representation:
 
 
 
 
 
Notice that the result should be -129,
but because the leftmost bit is 1, it’s actually +127.
This is 
underflow
: an arithmetic operation that should have
a negative result goes under the bottom to become positive.
 
Underflow #2
 
Overflow Example
 
“17. Inserted debug statements into anomdtb.f90,
discovered that a sum-of-squared variable is becoming
very, very negative! Key output from the debug statements:
 
OpEn=   16.00, OpTotSq=    4142182.00, OpTot= 7126.00
DataA val =       93, OpTotSq=       8649.00
DataA val =      172, OpTotSq=      38233.00
DataA val =      950, OpTotSq=     940733.00
DataA val =      797, OpTotSq=    1575942.00
DataA val =      293, OpTotSq=    1661791.00
DataA val =       83, OpTotSq=    1668680.00
DataA val =      860, OpTotSq=    2408280.00
DataA val =      222, OpTotSq=    2457564.00
DataA val =      452, OpTotSq=    2661868.00
DataA val =      561, OpTotSq=    2976589.00
DataA val =    49920, OpTotSq=-1799984256.00
DataA val =      547, OpTotSq=-1799684992.00
DataA val =      672, OpTotSq=-1799233408.00
DataA val =      710, OpTotSq=-1798729344.00
DataA val =      211, OpTotSq=-1798684800.00
DataA val =      403, OpTotSq=-1798522368.00
OpEn=   16.00, OpTotSq=-1798522368.00,
OpTot=56946.00
forrtl: error (75): floating point exception
IOT trap (core dumped)”
 
“..so the data value is unbfeasibly
large, but why does the sum-of-
squares parameter OpTotSq go
negative?!!
 
Probable answer: the high value is
pushing beyond the single-precision
default for Fortran reals?”
 
 
 
 
 
 
 
 
 
https://gist.github.com/markcmarino/9e1afcad683e7832ad38d149ba157feb
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
25
 
Overflow Example (cont’d)
 
“17. Inserted debug statements into anomdtb.f90,
discovered that a sum-of-squared variable is becoming
very, very negative! Key output from the debug statements:
 
OpEn=   16.00, OpTotSq=    4142182.00, OpTot= 7126.00
DataA val =       93, OpTotSq=       8649.00
DataA val =      172, OpTotSq=      38233.00
DataA val =      950, OpTotSq=     940733.00
DataA val =      797, OpTotSq=    1575942.00
DataA val =      293, OpTotSq=    1661791.00
DataA val =       83, OpTotSq=    1668680.00
DataA val =      860, OpTotSq=    2408280.00
DataA val =      222, OpTotSq=    2457564.00
DataA val =      452, OpTotSq=    2661868.00
DataA val =      561, OpTotSq=    2976589.00
DataA val =    49920, OpTotSq=-1799984256.00
DataA val =      547, OpTotSq=-1799684992.00
DataA val =      672, OpTotSq=-1799233408.00
DataA val =      710, OpTotSq=-1798729344.00
DataA val =      211, OpTotSq=-1798684800.00
DataA val =      403, OpTotSq=-1798522368.00
OpEn=   16.00, OpTotSq=-1798522368.00,
OpTot=56946.00
forrtl: error (75): floating point exception
IOT trap (core dumped)”
 
“..so the data value is unbfeasibly
large, but why does the sum-of-
squares parameter OpTotSq go
negative?!!
 
Probable answer: the high value is
pushing beyond the single-precision
default for Fortran reals?”
 
Likely actual answer:
The code used an integer to do the
arithmetic, then multiplied by a
floating point number before
outputting -- but it got an overflow.
https://gist.github.com/markcmarino/9e1afcad683e7832ad38d149ba157feb
 
Negative Bit Representation Lesson
CS1313 Spring 2024
 
26
Slide Note
Embed
Share

Dive into the world of negative bit representation in computer science, exploring the need for representing negativity in integers, methods like Two's Complement, disadvantages of Sign-Value and One's Complement, range of Two's Complement values, overflow, underflow, and more. Discover the significance of picking the right bit for sign representation and the advantages of using Two's Complement for handling negative numbers efficiently.

  • Negative Bit Representation
  • Computer Science
  • Twos Complement
  • Integer Representation
  • Overflow

Uploaded on Sep 30, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. Negative Bit Representation Outline 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Two s Complement 11. Advantages of Two s Complement #1 12. Advantages of Two s Complement #2 13. Advantages of Two s Complement #3 14. Advantages of Two s Complement #4 15. Advantages of Two s Complement #5 Negative Bit Representation Outline Negative Integers Representing Negativity #1 Representing Negativity #2 Which Bit for the Sign? Sign-Value Disadvantages of Sign-Value One s Complement Disadvantages of One s Complement 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Range of Two s Complement Values #1 Range of Two s Complement Values #2 Range of Two s Complement Values #3 Range of Two s Complement Values #4 Range of Two s Complement Values #5 Overflow #1 Overflow #2 Underflow #1 Underflow #2 Overflow Example #1 Overflow Example #2 Negative Bit Representation Lesson CS1313 Spring 2024 1

  2. Negative Integers In the first slide packet on binary representation, we saw how non-negative integer values like 97 are represented in memory. What if, instead of having 97, we had -97? We need a way to represent negative integers. Negative Bit Representation Lesson CS1313 Spring 2024 2

  3. Representing Negativity #1 For starters, we need a way to represent whether an integer is negative or positive or zero. We can think of this as a binary question: a number is either negative or non-negative. So, we could add an extra bit to every byte in RAM, to represent the sign (negative or non-negative). Of course, then we d have 9-bit bytes, and computer hardware much prefers numbers of components that are powers of 2. Plus, we d need extra circuitry in our CPUs to properly do the calculations with negative numbers, which would cost more. So, this isn t a good solution. Negative Bit Representation Lesson CS1313 Spring 2024 3

  4. Representing Negativity #2 For starters, we need a way to represent whether an integer is negative or positive or zero. We can think of this as a binary question: a number is either negative or non-negative. We ve already decided that we don t want to have an additional bit whose only role is to represent the sign. So, we can simply pick a bit in the binary representation of the integer and decide that it s going to be the sign bit. Which bit should we pick? Negative Bit Representation Lesson CS1313 Spring 2024 4

  5. Which Bit for the Sign? Which bit should we pick to represent the sign? Well, we want to pick the bit that we re least likely to use in real life, so that it s not a big waste to use it as a sign bit. In real life, we re much more likely to deal with very small numbers (for example, 0, 1, 13, 97) than very large numbers (for example, 4001431453). So, we pick the leftmost bit, called the most significant bit, and decide that it ll be our sign bit because that s the bit that we ll miss the least. Negative Bit Representation Lesson CS1313 Spring 2024 5

  6. Sign-Value Okay, now we have our sign bit. Here is the first of three ways to represent negative integers. 1. Sign-Value: To get the negative version of a positive number, set the sign bit to 1, and leave all the other bits unchanged: 97 = 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 -97 = 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 Negative Bit Representation Lesson CS1313 Spring 2024 6

  7. Disadvantages of Sign-Value An unfortunate feature of Sign-Value representation is that there are two ways of representing the value zero: all bits set to zero, and all bits except the sign bit set to zero. 0 = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 = 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 This makes the math a bit confusing. More importantly, when performing arithmetic operations, we need to treat negative operands as special cases. So, our CPU needs a lot more circuitry to do arithmetic, which can be expensive. Negative Bit Representation Lesson CS1313 Spring 2024 7

  8. Ones Complement 2. One s Complement: To get the negative version of a positive number, invert (complement) all bits; that is, all 1 s become 0 s and vice versa. 97 = 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 -97 = 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 Negative Bit Representation Lesson CS1313 Spring 2024 8

  9. Disadvantages of Ones Complement An unfortunate feature of One s Complement representation is that there are two ways of representing the value zero: all bits set to zero, and all bits set to one. 0 = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 This makes the math a bit confusing. More importantly, when performing arithmetic operations, we need to treat negative operands as special cases. So, our CPU needs a lot more circuitry to do arithmetic, which can be expensive. Negative Bit Representation Lesson CS1313 Spring 2024 9

  10. Twos Complement 3. Two s Complement: To get the negative version of a positive number, invert all bits and then add 1. If the addition causes a carrybit past the most significant bit, then discard the high carry: 97 = 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 ~97 = 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 + 1 -97 = 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 Negative Bit Representation Lesson CS1313 Spring 2024 10

  11. Advantages of Twos Complement #1 In Two s Complement representation, the value zero is uniquely represented by having all bits set to zero: 0 = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ~0 = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Discard the high carry. + 1 -0 = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Negative Bit Representation Lesson CS1313 Spring 2024 11

  12. Advantages of Twos Complement #2 In Two s Complement representation, when you perform an arithmetic operation (for example, addition, subtraction, multiplication, division) on two signed integers, you can use exactly the same method as if you had two unsigned integers (that is, non-negative integers with no sign bit) ... EXCEPT, you throw away the high carry (or the high borrowfor subtraction). So, the only extra capabilities you need are: a. flipping all the bits (which it turns out you need for other things); b. throwing away the high carry (or the high borrow). That s MUCH CHEAPER than the extra circuitry needed for Sign-Magnitude or One s Complement. Negative Bit Representation Lesson CS1313 Spring 2024 12

  13. Advantages of Twos Complement #3 This property of Two s Complement representation is so incredibly handy that virtually every general-purpose computer available today uses Two s Complement. Why? Because, with Two s Complement, we don t need special algorithms (and therefore extra circuitry) for arithmetic operations that involve negative values. Negative Bit Representation Lesson CS1313 Spring 2024 13

  14. Advantages of Twos Complement #4 Using Two s Complement to do arithmetic: 97 = 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 -97 = 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Negative Bit Representation Lesson CS1313 Spring 2024 14

  15. Advantages of Twos Complement #5 Using Two s Complement to do arithmetic: 45 = 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 -14 = 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 31 = 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 Negative Bit Representation Lesson CS1313 Spring 2024 15

  16. Range of Twos Complement Values #1 When we represent negative integers in Two s Complement notation, the range of numbers that can be represented in b bits is: (2b 1) . . . (+2b 1 1) For example, the range of numbers that can be represented in 8 bits is: (27) . . . (+27 1) = 128 . . . 127 Likewise, the range of numbers that can be represented in 16 bits is: (215) . . . (+215 1) = 32,768 . . . 32,767 How do we know this? Negative Bit Representation Lesson CS1313 Spring 2024 16

  17. Range of Twos Complement Values #2 When we represent negative integers in Two s Complement notation, the range of numbers that can be represented in b bits is: (2b 1) . . . (+2b 1 1) How do we know this? Here s the biggest number that can be represented in 16 bits: 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 If we add one to it, we get: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 But this number is negative (that is, it has a 1 in the sign bit). So, mathematically, it s smaller than the previous number, not bigger, and therefore the previous number is the biggest. Negative Bit Representation Lesson CS1313 Spring 2024 17

  18. Range of Twos Complement Values #3 Here s the biggest number that can be represented in 16 bits: 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 If we add one to it, we get: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 But this number is negative. If this number were unsigned , then it d be 215, which is 216-1, which is 2b-1, where b (the number of bits) is 16. Therefore, the largest number that can be represented in b bits in Two s Complement must be 2b-1-1. Negative Bit Representation Lesson CS1313 Spring 2024 18

  19. Range of Twos Complement Values #4 So what s the smallest negative integer (that is, the negative integer with the greatest absolute value)? Well, can we represent the negative of 2b 1 1? +(2b-1 1) = 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ~(2b-1-1) = 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 1 -(2b-1-1) = 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 Negative Bit Representation Lesson CS1313 Spring 2024 19

  20. Range of Twos Complement Values #5 We can represent (2b 1 1). So, can we represent the negative of (2b 1)? -(2b-1-1) = 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 - 1 -(2b-1) = 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Since the sign didn t change, it worked! But, if we tried subtracting again, we d borrow and the sign would change, indicating failure. So, (2b 1) is the lowest number that can be represented (that is, the negative number with the highest absolute value). Negative Bit Representation Lesson CS1313 Spring 2024 20

  21. Overflow #1 When we re working with a value that s near the upper limit of what can be represented in Two s Complement for the given number of bits, we sometimes perform an operation that should result in a positive value but instead produces a negative value. Such an event is called overflow. Negative Bit Representation Lesson CS1313 Spring 2024 21

  22. Overflow #2 Consider the following addition in 8-bit Two s Complement representation: +127 = 0 1 1 1 1 1 1 1 + 1 + 1 +128? = 1 0 0 0 0 0 0 0 Notice that the result should be +128, but because the leftmost bit is 1, it s actually -128. This is overflow: an arithmetic operation that should have a positive result goes over the top to become negative. Negative Bit Representation Lesson CS1313 Spring 2024 22

  23. Underflow #1 When we re working with a value that s near the lower limit of what can be represented in Two s Complement for the given number of bits, we sometimes perform an operation that should result in a negative value but instead produces a positive value. Such an event is called underflow. Negative Bit Representation Lesson CS1313 Spring 2024 23

  24. Underflow #2 Consider the following addition in 8-bit Two s Complement representation: -128 = 1 0 0 0 0 0 0 0 - 1 - 1 -129? = 0 1 1 1 1 1 1 1 Notice that the result should be -129, but because the leftmost bit is 1, it s actually +127. This is underflow: an arithmetic operation that should have a negative result goes under the bottom to become positive. Negative Bit Representation Lesson CS1313 Spring 2024 24

  25. Overflow Example 17. Inserted debug statements into anomdtb.f90, discovered that a sum-of-squared variable is becoming very, very negative! Key output from the debug statements: ..so the data value is unbfeasibly large, but why does the sum-of- squares parameter OpTotSq go negative?!! OpEn= 16.00, OpTotSq= 4142182.00, OpTot= 7126.00 DataA val = 93, OpTotSq= 8649.00 DataA val = 172, OpTotSq= 38233.00 DataA val = 950, OpTotSq= 940733.00 DataA val = 797, OpTotSq= 1575942.00 DataA val = 293, OpTotSq= 1661791.00 DataA val = 83, OpTotSq= 1668680.00 DataA val = 860, OpTotSq= 2408280.00 DataA val = 222, OpTotSq= 2457564.00 DataA val = 452, OpTotSq= 2661868.00 DataA val = 561, OpTotSq= 2976589.00 DataA val = 49920, OpTotSq=-1799984256.00 DataA val = 547, OpTotSq=-1799684992.00 DataA val = 672, OpTotSq=-1799233408.00 DataA val = 710, OpTotSq=-1798729344.00 DataA val = 211, OpTotSq=-1798684800.00 DataA val = 403, OpTotSq=-1798522368.00 OpEn= 16.00, OpTotSq=-1798522368.00, OpTot=56946.00 forrtl: error (75): floating point exception IOT trap (core dumped) Probable answer: the high value is pushing beyond the single-precision default for Fortran reals? https://gist.github.com/markcmarino/9e1afcad683e7832ad38d149ba157feb Negative Bit Representation Lesson CS1313 Spring 2024 25

  26. Overflow Example (contd) 17. Inserted debug statements into anomdtb.f90, discovered that a sum-of-squared variable is becoming very, very negative! Key output from the debug statements: ..so the data value is unbfeasibly large, but why does the sum-of- squares parameter OpTotSq go negative?!! OpEn= 16.00, OpTotSq= 4142182.00, OpTot= 7126.00 DataA val = 93, OpTotSq= 8649.00 DataA val = 172, OpTotSq= 38233.00 DataA val = 950, OpTotSq= 940733.00 DataA val = 797, OpTotSq= 1575942.00 DataA val = 293, OpTotSq= 1661791.00 DataA val = 83, OpTotSq= 1668680.00 DataA val = 860, OpTotSq= 2408280.00 DataA val = 222, OpTotSq= 2457564.00 DataA val = 452, OpTotSq= 2661868.00 DataA val = 561, OpTotSq= 2976589.00 DataA val = 49920, OpTotSq=-1799984256.00 DataA val = 547, OpTotSq=-1799684992.00 DataA val = 672, OpTotSq=-1799233408.00 DataA val = 710, OpTotSq=-1798729344.00 DataA val = 211, OpTotSq=-1798684800.00 DataA val = 403, OpTotSq=-1798522368.00 OpEn= 16.00, OpTotSq=-1798522368.00, OpTot=56946.00 forrtl: error (75): floating point exception IOT trap (core dumped) Probable answer: the high value is pushing beyond the single-precision default for Fortran reals? Likely actual answer: The code used an integer to do the arithmetic, then multiplied by a floating point number before outputting -- but it got an overflow. https://gist.github.com/markcmarino/9e1afcad683e7832ad38d149ba157feb Negative Bit Representation Lesson CS1313 Spring 2024 26

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#