Tuesday, October 8, 2013

Integer arithmetic when overflow exists

Newsgroup: comp.lang.c++

Subject: Integer arithmetic when overflow exists

From: junyangzou <zoujyjs@...>

Date: Mon, 7 Oct 2013 20:39:59 -0700 (PDT)



Tow 32 bit integer values A and B, are processed to give the 32 bit integers C and D as per the following rules. Which of the rule(s) is(are) reversible? i.e. is it possible to obtain A and B given c and D in all condition?



A. C = (int32)(A+B), D = (int32)(A-B)



B. C = (int32)(A+B), D= (int32)((A-B)>>1)



C. C = (int32)(A+B), D = B



D. C = (int32)(A+B), D = (int32)(A+2*B)



E. C = (int32)(A*B), D = (int32)(A/B)



A few questions about the integer arithmetic. Modular addition forms amathematical structure known as an abelian group. How about signed addition? It's also commutative (that?s where the ?abelian? part comes in) and associative, is this forms a n an abelian group?



Given that integer addition is commutative and associative, C is apparently true, because we can retrieve A by (A+(B-B)). What about D? Can we assume that 2 * B = B + B st. B = A+B+B-(A+B)?



And multiplication is more complicated, but I know that it can not be retrieve A if there is an overflow.







via Usenet Forums - Usenet Search,Free Usenet - comp.lang.c++ http://www.pocketbinaries.com/usenet-forums/showthread.php?102926-Integer-arithmetic-when-overflow-exists&goto=newpost

View all the progranning help forums at:

http://www.pocketbinaries.com/usenet-forums/forumdisplay.php?128-Coding-forums

No comments:

Post a Comment