Overflow error occurs when multiplying integer constants in excel
32,767 is the largest positive number you can have not 31768.
You are dealing with 16 bit signed arithmetic using 2's compliment. The MSB
bit is the sign so your range of numbers are
When you use twos compliment you invert evry bit and then add 1
the range of numbers are
7FFF (largest postive number) to 8000 + 1 = 8001 (largest negative number)
8000 is not used it is usually refered to Negative Zero.
7FFF (hex) = 32767
"Abe Thomas" wrote:
An overflow error occurs when 2 integer constants (< 32768) are multiplied
that results in a value that is higher than what an integer can hold - see
code below.
This happens all the excel versions I tested.
Anyone out that aware of this problem ?
Sub Mult_Of_2_IntegerConstants_that_result_in_a_LongIn t()
Dim i1 As Long
i1 = 1 * 32767 ' This works since the result is less than 32768
i1 = 2 * 32767 ' This results in an OVERFLOW (the answer is = 32768)
i1 = 2 * 32768 ' This works since one of the operands is = 32768
End Sub
|