bit - why x>>1 is not always same as x/2? -
why x>>1
not same x/2
?
especially when negative odd number, example:
x = -3; assert.assertnotequals(x / 2, x >> 1); x = 3; assert.assertequals(x / 2, x >> 1);
thanks helps.
because of how >>
works. >>
not "divide 2", ends same answer situations. example, on 8-bit values:
3
0b00000011
; right-shift 1 bit 0b00000001
, 1
.
-3
0b11111101
; right-shift 1 bit 0b11111110
, or -2
.
however, integral division /
in java defined round down towards 0 - (-3) / 2
becomes -1
(as closer 0
-2
is).
edit: comments refer brainfart in switching >>
, >>>
around.
Comments
Post a Comment