Win a copy of Functional Reactive Programming this week in the Other Languages forum!

# i>>>32 ??? & i>>>0 and i>>>35

Amit Tyagi
Ranch Hand
Posts: 52

Hi,
Could somebody explain me the meaning of unsigned shift.
What exactly is happening here? How integer can be shift by 35 bits?
int i = 5;
i>>>32 or i>>>0 and i>>>35
Thanks
Amit

Sudhir Bangera
Ranch Hand
Posts: 50
Hi Amit,
with unsigned shift, it actualy works this way
i>>>35%32 == i >>> 3 (i.e. the remainder of % operation 35 - 32)
so i>>>32 == i >>> 0 (i.e. the value will be same after the operation)
Similarly i>>>64 will also be equivalent to i>>>0.
Hope this helps.....

Amit Tyagi
Ranch Hand
Posts: 52
Thanks Sudhir,
How it will work for the negative numbers?
-35>>>35
Amit

ranga akarapu
Greenhorn
Posts: 3
to do the above shift operation
step1: you calculate the binary value of 35 i.e 0100011
step2: find the two's compliment of it i.e.it becomes 1011100
step3: then add 1 to it i.e. it becomes 1001101
step4: now shift it by 3 places to its right
note: in first shift itselt it looses its sign
step5: recalculate to decimal form
I hope answer is inline for what u r looking
bye ranga..

Ranch Hand
Posts: 149
ranga,
Thanks for your answer.but how should i calculate binary value in the exam.Pls guide me in this regard.

Jane Griscti
Ranch Hand
Posts: 3141
It's easier to work with the formula equivalents for the shift operators.
<pre>
Left-shift: 16<<5 equivalent to 16 * 2<sup>5</sup><br /> Right-shift: 16>>5 equivalent to 16 / 2<sup>5</sup>

</pre>
For the unsigned right shift operator >>>, if the number is positive, the result is the same as the right-shift operator. If the number is negative the equivalent formula is:
<pre>
-16 >>> 5 equiv to (16>>5) + ( 2<<~5)
</pre>
Hope that helps.
------------------
Jane
[This message has been edited by Jane Griscti (edited October 29, 2000).]