On Apr 28, 4:13 am, nickf3 <nic...@[EMAIL PROTECTED]
> wrote:
> On Apr 27, 10:13 am, "Brig White" <brighamand...@[EMAIL PROTECTED]
> wrote:
>
> > { Multi-posted article. -mod }
>
> > Why is it than when I bit ****ft to the right with a signed integer
type, all
> > the higher order bits above the move are set but when I ****ft with an
> > unsigned type, they are cleared?
>
> This is how ones' complement signed number representation works.
> For example, 31 in binary (showing only 8 bits) is 00011111
> -31 is then 11100001, i.e. binary complement (all bits flipped)
> plus one (11100000 + 00000001 = 11100001).
>
> ****ft to the right is equivalent to integer division by 2.
> 31/2 = 15 = 00001111 in binary; -31/2 = -15 = 11110001 in binary.
>
Correcting myself:
This, of course, will be -31 >> 1 = -16 = 1111000b,
so negative division by two and the right ****ft are not equivalent.
--
Nikolai
--
[ See http://www.gotw.ca/resources/clcm.htm
for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]


|