JDK 8 code review request for initial unsigned integer arithmetic library support
Joseph Darcy
joe.darcy at oracle.com
Sat Jan 21 00:31:20 UTC 2012
On 1/18/2012 7:52 PM, Ulf Zibis wrote:
> Am 18.01.2012 03:54, schrieb Joe Darcy:
>> I've posted a revised webrev at
>>
>> http://cr.openjdk.java.net/~darcy/4504839.2
>
> Instead
> <code>'\u0030'</code>
> you can use
> {@code '\u005Cu0030'}
That is a fine cleanup, but I'll do a bulk conversion of all the
instances of that pattern later on under another bug.
>
> Byte:
> =====
> 459 public static int toUnsignedInt(byte x) {
> 460 return ((int) x) & 0xff;
> 461 }
> This should be good enough (similar at Short, Integer):
> 459 public static int toUnsignedInt(byte x) {
> 460 return x & 0xff;
> 461 }
> (This notation if regularly used in sun.nio.cs coders.)
I think the current code more explicitly indicates the intention of the
method's operation to more casual readers less familiar with the details
of primitive widening conversions, etc.
>
> missing:
> public static short toUnsignedShort(byte x)
That omission was intentional. The language and VM only really support
arithmetic on int and long values, not short or byte, so I only
providing methods to widen to int and long.
>
> superfluous:
> public static long toUnsignedInt(byte x)
> public static long toUnsignedLong(byte x) (similar at Short)
> one can use:
> int i = toUnsignedShort(x)
> long l = toUnsignedShort(x) (similar at Short)
>
> Integer:
> ========
> 623 * <li>The value represented by the string is larger than the
> 624 * largest unsigned {@code int}, 2<sup>32</sup>-1.
> If you format {@code int}, then you speak about the java type int,
> which is always signed, never unsigned.
> IMO you should better write 'unsigned 32-bit integer".
> (similar at Long)
Due to similar feedback, I've made various clarifications to the
javadoc, but the basic situation is that the "fooUnsigned" methods
interpret the bits as unsigned values, as already done in toHexString
and related methods.
Thanks,
-Joe
More information about the core-libs-dev
mailing list