File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
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 Soft Skills this week in the Jobs Discussion 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.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Strange behaviour of bit shifting