hi all, plzz try this, (Q1) 5<<32 results 5 5<<-32 results 5 5<<33 results 10 these are ok but plzz explain this, 5 << -33 results -2147483648 i.e the lowest boundry of int datatype. (Q2) plzz explain -1 >> 1 results -1 not 0
Hi Nadeem, Only 5 bits of the right operand are used the reason is that an int is a 32-bit value and can only be shifted 0 through 31 times. Now see 5 << -33 -33 divided by 32 gives -1 (i assume you know the reason) -1 in binary is 111111111111111111111111111111111 take only 5 bits it's now 11111 and equals 31 in decimal given question becomes 5<<31 I think you know the rest. second question is -1>>1 and sure it'll give -1 the reason is right shift is a signed operator i.e it preserves the sign. the bits that fill in the shifted left bits have the value of the leftmost bit(before the shift operation).