expr Field 1 + Field 2 Since when does 2 positives make a negative

Please help. I am adding 2 fields which are both positive and the result is negative. What am I missing?

 
FileEHash=`expr ${Field1} + ${Field2}` >/dev/null

Debug Results
+ expr 02100002 + 2009701914
EntryHash=2011801916
+ expr 02100002 + 2146202044
FileEHash=-2146665250

How do I delete a post? I found the answer in the forums.

---------- Post updated at 12:44 PM ---------- Previous update was at 12:17 PM ----------

According to another post - you will get the negative result. Because while expr working, the result will be stored in internal temporary variable or register then you will get the result.. but that particular temporary variable or register can accomodate only 2147483647 .. if it crosses this limit, you may get the junk value like -ve values... this is my finiding for this issue..

It's because the answer is larger than the largest integer number expr can deal with.

The "bc" command can deal with larger numbers.
echo "2*1024*1024*1024" | bc
2147483648


The "expr" command is limited.
expr 2147483646 + 1
2147483647

expr 2147483647 + 1
-2147483648

Probably exceeding your INT_MAX in limits.h

A typical limit is 2147483647.
Your value would normally be 2148302046 which is greater
and hence you get the negative, since bits were truncated
from the most significant side of your result.

'bc' will give you the result you want, but you would have to
continue to use 'bc' to do anything useful with that result
other than report it.

 
field1=2100002
field2=2146202044
 
echo "$field1 + $field2" | bc
2148302046
 
result=$(echo "$field1 + $field2" | bc)
echo $result
2148302046