BigInteger上的Java unsigned bitshift

时间:2017-10-19 13:18:13

标签: java biginteger

我试图在右侧应用无符号的移位,但我找不到这样做的方法。有谁知道吗?

示例代码:

BigInteger bi;

bi.shiftRight(7) // equals >> 7

如何申请>>> 7

重复?请stahp,我没有答案。

3 个答案:

答案 0 :(得分:2)

正如BigInteger javadocs所说:

  

省略了无符号右移运算符(>>>),因为此操作与此类提供的“无限字大小”抽象相结合没有多大意义。

答案 1 :(得分:1)

如果它是否定的,你总是可以否定。

or

注意:请记住private void test(String[] args) { test(BigInteger.ONE.shiftLeft(10)); test(BigInteger.valueOf(-50)); } private void test(BigInteger bigInteger) { test1(bigInteger); test1(bigInteger.negate()); } private void test1(BigInteger bi) { System.out.println(bi.toString(2)+" >> 5 = "+bi.shiftRight(5).toString(2)); } 不可变所以如果你对它们进行数学运算,你必须保留返回的结果,因为数学不会修改数值,它返回计算结果。

答案 2 :(得分:0)

我建议使用一种unsigned int int,以便允许使用运算符,并确保数据只是未签名。