wood burning stoves 2.0*
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Strange behaviour of bit shifting Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Strange behaviour of bit shifting" Watch "Strange behaviour of bit shifting" New topic
Author

Strange behaviour of bit shifting

Alvin Lee
Greenhorn

Joined: Aug 22, 2002
Posts: 3
Do anybody know why the below program produce the result as shown ??
Why int and short reproduce itself shifting for 32 bits ?
Why long reproduce itself shifting for 64 bits ?
Thx.
class shiftTest{
public static void main(String[] args){
int a = 30;
short b = 30;
long c = 30;
for(int i=0;i<=70;i++){
System.out.println(i+" - "+(a>>>i)+" - "+(b>>>i)+" - "+(c>>>i));
}
}
}
Result:
0 - 30 - 30 - 30
1 - 15 - 15 - 15
2 - 7 - 7 - 7
3 - 3 - 3 - 3
4 - 1 - 1 - 1
5 - 0 - 0 - 0
6 - 0 - 0 - 0
7 - 0 - 0 - 0
8 - 0 - 0 - 0
9 - 0 - 0 - 0
10 - 0 - 0 - 0
11 - 0 - 0 - 0
12 - 0 - 0 - 0
13 - 0 - 0 - 0
14 - 0 - 0 - 0
15 - 0 - 0 - 0
16 - 0 - 0 - 0
17 - 0 - 0 - 0
18 - 0 - 0 - 0
19 - 0 - 0 - 0
20 - 0 - 0 - 0
21 - 0 - 0 - 0
22 - 0 - 0 - 0
23 - 0 - 0 - 0
24 - 0 - 0 - 0
25 - 0 - 0 - 0
26 - 0 - 0 - 0
27 - 0 - 0 - 0
28 - 0 - 0 - 0
29 - 0 - 0 - 0
30 - 0 - 0 - 0
31 - 0 - 0 - 0
32 - 30 - 30 - 0
33 - 15 - 15 - 0
34 - 7 - 7 - 0
35 - 3 - 3 - 0
36 - 1 - 1 - 0
37 - 0 - 0 - 0
38 - 0 - 0 - 0
39 - 0 - 0 - 0
40 - 0 - 0 - 0
41 - 0 - 0 - 0
42 - 0 - 0 - 0
43 - 0 - 0 - 0
44 - 0 - 0 - 0
45 - 0 - 0 - 0
46 - 0 - 0 - 0
47 - 0 - 0 - 0
48 - 0 - 0 - 0
49 - 0 - 0 - 0
50 - 0 - 0 - 0
51 - 0 - 0 - 0
52 - 0 - 0 - 0
53 - 0 - 0 - 0
54 - 0 - 0 - 0
55 - 0 - 0 - 0
56 - 0 - 0 - 0
57 - 0 - 0 - 0
58 - 0 - 0 - 0
59 - 0 - 0 - 0
60 - 0 - 0 - 0
61 - 0 - 0 - 0
62 - 0 - 0 - 0
63 - 0 - 0 - 0
64 - 30 - 30 - 30
65 - 15 - 15 - 15
66 - 7 - 7 - 7
67 - 3 - 3 - 3
68 - 1 - 1 - 1
69 - 0 - 0 - 0
70 - 0 - 0 - 0
Barry Gaunt
Ranch Hand

Joined: Aug 03, 2002
Posts: 7729
The right hand argument of a shift operator is always taken modulo the number of bits (32 or 64) in the lefthand operand. Notice too that the short (16 bit) lefthand argument is promoted to an int (32-bit).
-Barry


Ask a Meaningful Question and HowToAskQuestionsOnJavaRanch
Getting someone to think and try something out is much more useful than just telling them the answer.
 
jQuery in Action, 2nd edition
 
subject: Strange behaviour of bit shifting
 
Similar Threads
bit shifting
shift Operators
>>> gives negative ans
Right shift
shifting operators... please help !