Java中的Unsigned Int

Java中的Unsigned Int,第1张

Java中的Unsigned Int

根据您的工作,您可以将long视为64位值,将int视为32位值。大多数 *** 作(尤其是readInt / Long writeInt /
Long)都通过忽略符号来实现相同的功能。

您能否举例说明您对这些数字执行的 *** 作,也许我们可以建议如何在不扩展类型的情况下执行相同的 *** 作。

例如,++,-,+,-,*,==,!=,<<都与工作无关,而无论是否使用手势(即给出相同答案)。为>>您可以替代>>>

/,%,>,> =,<,<=和打印函数采用带符号的值,但是您应该能够解决这些问题(如果使用这些)。

例如

long unsignedA = long unsignedB = boolean greater = unsignedA + Long.MIN_VALUE > unsignedB + Long.MIN_VALUE

编辑:为什么这样做?部分原因是Java没有上溢/下溢异常。

例如

byte unsignedA = 0;unsignedA--; // unsignedA == FF, is this -1 or 255? Java assumes the former but you assume the laterbyte unsignedB = unsignedA * unsignedA;// unsignedB is -1 * -1 = 1 or (byte) (255*255) = (byte) 65525 = 1.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/5487132.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存