posted 21 years ago
hi,
i think the best way to understand shift operators is to take a look at this code :
a << b
public static long
leftShift (int a, int b, typeLength ) {
double c= a*((b<typeLength-1)? pow(2,b):
pow(2,b%typeLength));
return (long) c;
}
a >> b
public static long
rightShift ( int a, int b, int typeLength ){
double c=(b<typeLength-1)? pow(2,b) :
pow(2,b%typeLength));
double d=a/c;
double result = floor(d);
return (long)result;
}
consider the parameter typeLength as the length
of the result variable.
so for : int a = 2<<4; // typelength = 32
long b = 2<<4 // typelength = 64
tell me something if you don't understand
best regards
Luis Meira