BigInteger doesn't support >>>

I have a large number. I need to grab the number represented by the first 21 bits. I do this by doing:
    (number & 0xFFFFF8000L) >>> 15;
That works in java because the number is of type long which is 64 bits. However, in javascript I have found that the bitwise operators truncate values down to 32 bits. So, to get around this I found a javascript implementation of the Java class BigInteger. It is at:
I can do the mask using the and() method. But, I don't know how to do the shift. The javascript implementation, like the Java implementation of BigInteger, does not support unsigned bitwise shifts.

I can do this:

var origEncodedVal = 26766802693;
var encodedVal = new BigInteger(""+origEncodedVal, 10);
var mask = new BigInteger("FFFFF8000",16);
var result = encodedVal.and(mask).shiftRight(15);

but won't the final result be wrong if the initial bit is set in the original encoded value? I'm not worried about other masks on that number like 0x000007F00 because the high bit will be 0 regardless, so a signed shift and unsigned shift do the same thing in that case..

How do I deal with this? Why does BigInteger not implement unsigned shift right? The javadoc of BigInteger says:
    "The unsigned right shift operator (>>>) is omitted, as this operation makes little sense in combination with the "infinite word size" abstraction provided by this class."
but that statement doesn't make any sense to me.

I suppose one solution would be to shift right one bit and then AND it with a mask that zeroes out the high bit. Is that my best bet or is there a better way to do it? Another solution I suppose would be to prefix the original number with "0" and adjust the masks accordingly. It just seems silly that I would need to do that though.
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Tommy BraasCommented:
If you need to right shift, just divide by 2 the number of times you want ot shift.
Mick BarryJava DeveloperCommented:
BigInteger has no defined word size, so its not a problem as the virtual sign bit won't be affected.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.