Swift提供所谓的“溢出运算符”& *,* +,& - 用于整数算术(Swift Advanced Operators)。它们旨在在执行可能导致溢出的操作时截断可用位数。例如:
var unsignedOverflow = UInt8.max // --> 255
unsignedOverflow = unsignedOverflow &+ 1 // --> 0, instead of overflow
由于Java不支持无符号整数,因此可能没有真正的等价。在Java 8中,有Integer.toUnsignedLong(int)
或Integer.divideUnsigned(...)
(Java 8 Class Integer)等函数,但遗憾的是我无法使用此版本的Java。
是否有一些(简单的)方法可以模仿上述行为?
编辑:我想要实现的是乘法并在Java中添加正整数值,以便结果始终为正整数值。我尝试使用%运算符,但它返回余数,可以是负数。
答案 0 :(得分:0)
Java没有无符号数字。但是,您可以通过舍弃不需要的位来达到类似的结果:
使用int
或long
,只要足够适合您的范围即可。
然后,对于每个操作,清除范围上方的位:
int abc = 255;
abc += 10;
abc &= 0xFF; // clears any bits other then least significant 8.
System.out.println(abc); // --> 9