Java 红宝石无符号右移

Java 红宝石无符号右移,java,ruby,bit-manipulation,unsigned,Java,Ruby,Bit Manipulation,Unsigned,我有一段java代码: 返回(int)(种子>>>(48位)) 如您所见,它使用无符号右移运算符(>>)。我试图用ruby实现这段代码,它没有无符号右移运算符,只有一个有符号右移运算符。由于我对>>>操作符不是很熟悉,所以我不太确定如何在ruby中实现这一点。我试着做了一些搜索,看看是否有人曾经遇到过这个问题,但找不到任何相关的东西。任何帮助都将不胜感激:)无符号移位运算符可以使用简单的位移位和掩蔽轻松实现: public static int unsignedShift(int amt, in

我有一段java代码:
返回(int)(种子>>>(48位))


如您所见,它使用无符号右移运算符(>>)。我试图用ruby实现这段代码,它没有无符号右移运算符,只有一个有符号右移运算符。由于我对>>>操作符不是很熟悉,所以我不太确定如何在ruby中实现这一点。我试着做了一些搜索,看看是否有人曾经遇到过这个问题,但找不到任何相关的东西。任何帮助都将不胜感激:)

无符号移位运算符可以使用简单的位移位和掩蔽轻松实现:

public static int unsignedShift(int amt, int val) {
    int mask = (1 << (32 - amt)) - 1;   
    return (val >> amt) & mask;
}
公共静态int unsignedShift(int amt,int val){
整数掩码=(1>金额)&掩码;
}

掩码通过将移位后应保留的所有位设置为1来工作。请注意,对于amt>=32和amt=0,这将返回与Java不同的结果。

seed的值范围是多少?是肯定的还是有符号的?谢谢你的建议,但是这段代码看起来不像Ruby。它看起来像支持无符号移位运算符的JavaScript。@Jared这是Java,但这只是为了演示其原理。移植到任何其他语言都应该是微不足道的。