From: horst DOT kraemer AT snafu DOT de (Horst Kraemer) Newsgroups: comp.os.msdos.djgpp Subject: Re: DJGPP division optimisations Date: Tue, 14 Jul 1998 10:19:31 GMT Organization: Unlimited Surprise Systems, Berlin Message-ID: <35ab1f95.79373671@news.snafu.de> References: <35AA8994 DOT 3FC1 AT virgin DOT net> <6oe4in$1m7$1 AT rosenews DOT rose DOT hp DOT com> <35AAA705 DOT 1BDE AT cam DOT org> NNTP-Posting-Host: n31-172.berlin.snafu.de Lines: 17 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk On Mon, 13 Jul 1998 20:32:05 -0400, Vic wrote: >it's true, I checked this. I put "unsigned" in front of the variables >and the 2 loops performed the same (2.74 seconds) And the reason is clear. The operations x/2 and x>>1 are different if x is a negative number. As you declared x to be a signed type the compiler may not "pessimize" /2 to >>1. It doesn't know when compiling that x will never be negative. int i = -1; printf("%d %d\n", i/2 , i>>1 ); Regards Horst