Re: C++ Primer ex 7.3
On Aug 10, 12:57 pm, Frank Birbacher <bloodymir.c...@gmx.net> wrote:
[...]
What I don't understand is why the dopped bit is not looked at in each
iteration. I thought of:
while(n>0)
{
if( n & 1 )
r *= m;
m *= m;
n >>= 1;
}
Because I typed the code in too fast, and only tested it with
some simple values for which it happened to work.
you said "n = -n" in if clause, so how can "n" still be a -ve number ?
There is a negative int number "n" such that "-n" is too large to be
represented. It happens to usually come out as n again. That is "n ==
-n" is true (technically it is still undefined behaviour as James
already said).
And of course, it depends on the implementation. It's only a
problem on machines using 2's complement---it works fine with
1's complement and signed magnitude. Of course, off hand, I
only know of one, relatively exotic mainframe that uses 1's
complement today, and as far as I know, the last signed
magnitude machine went out of production some years ago. So
it's probably a safe bet that the machine he's programming on
uses 2's complement.
--
James Kanze (GABI Software) email:james.ka...@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34