BigDecimal是否支持位操作?如果是的话,有人可以指出一个很好的教程吗?
如果不是,将BigDecimal变量除以2的幂的最佳方法是什么?
顾名思义, BigDecimal 存储在 decimal 表示中 . 所以除以2的幂的最快方法是......除以2的幂 . 您可以向左移位和向右移位,但是only in base-10(甚至它的行为与位移不同,因为它可以产生非整数值) .
BigDecimal
我想你的意思是BigInteger . BigDecimal 对浮点值使用十进制表示,因此它不适合位操作 .
BigInteger 的左右移位操作分别为 .shiftLeft() 和 .shiftRight() ,乘法/除法分别为2的幂,所以你可以使用它 .
BigInteger
.shiftLeft()
.shiftRight()
它还具有 .bitCount() , .bitLength() , .{clear,set}Bit() , .and() , .or() , .andNot() 等操作 . 但是,没有任何意义,因为它没有意义 .
.bitCount()
.bitLength()
.{clear,set}Bit()
.and()
.or()
.andNot()
2 回答
顾名思义,
BigDecimal
存储在 decimal 表示中 . 所以除以2的幂的最快方法是......除以2的幂 . 您可以向左移位和向右移位,但是only in base-10(甚至它的行为与位移不同,因为它可以产生非整数值) .我想你的意思是BigInteger .
BigDecimal
对浮点值使用十进制表示,因此它不适合位操作 .BigInteger
的左右移位操作分别为.shiftLeft()
和.shiftRight()
,乘法/除法分别为2的幂,所以你可以使用它 .它还具有
.bitCount()
,.bitLength()
,.{clear,set}Bit()
,.and()
,.or()
,.andNot()
等操作 . 但是,没有任何意义,因为它没有意义 .