Bug fix for Turbo C

Another casualty of applied metaphysics eychaner at suncub.bbso.caltech.edu
Mon Jul 1 09:54:16 AEST 1991


ok at goanna.cs.rmit.oz.au (Richard A. O'Keefe) writes:
>I (Another casualty of applied metaphysics.) write:
>> short a_250K_array[];				/* The big array */
>> int bit_shift,					/* Bit shift */
>>     array_size, i;				/* Array size and index */
>
>> for (i = 0; i < arraysize; i++) {
>>     a_250K_array[i] >>= bit_shift;
>>     /* I shouldn't index the array like this; but it makes the code clearer */
>>     }
>
>> What I want is to divide each member of the 250K short array by 2^bit_shift.
>> The 250K array contains both positive and negative numbers.
>
>This has been beaten to death in SIGPLAN Notices over the years, but
>are you aware that "arithmetic right shift k bits" is _NOT_ the same
>thing as "divide by 2**k"?  For example,
>	((-1) /  2) == 0,
>but	((-1) >> 1) == -1

Yeah, I know, I know.  So it's not REALLY division by 2^k.  So sue me.  (BTW,
it is division by 2^k for all numbers EXCEPT -1, is it not?)

>If you're not worried about portability, you may not have a problem.

Well, I'm not worried about portability.

-G.
******************************************************************************
Glenn Eychaner - Big Bear Solar Observatory - eychaner at suncub.bbso.caltech.edu
"There is no monopoly of common sense / On either side of the political fence"
                                                            -Sting, "Russians"



More information about the Comp.lang.c mailing list