Win a copy of Design for the Mind this week in the Design forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Strange behaviour of bit shifting

 
Alvin Lee
Greenhorn
Posts: 3
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 7729
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic