Jo Skorsev
Jo Skorsev

Reputation: 99

rounding to the nearest zero, bitwise

I just wonder how can i round to the nearest zero bitwise? Previously, I perform the long division using a loop. However, since the number always divided by a number power by 2. I decide to use bit shifting. So, I can get result like this:

12/4=3
13/4=3
14/4=3
15/4=3
16/4=4

can I do this by performing the long division like usual?

12>>2
13>>2

if I use this kind of bit shifting, are the behavior different for different compiler? how about rounding up? I am using visual c++ 2010 compiler and gcc. thx

Upvotes: 1

Views: 2384

Answers (1)

nneonneo
nneonneo

Reputation: 179422

Bitwise shifts are equivalent to round-to-negative-infinity divisions by powers of two, meaning that the answer is never bigger than the unrounded value (so e.g. (-3) >> 1 is equal to -2).

For non-negative integers, this is equivalent to round-to-zero.

Upvotes: 5

Related Questions