byte b; // ... int i = b & 0xff;To get the effect of a 16-bit unsigned use char.
To get the effect of a 32-bit unsigned:
int i; // ... long l = i & 0xffffffffL;If you have an extensive amount of unsigned work to do, especially 64-bit unsigned, you might find the WBEM classes useful.
Here is how to combine two unsigned shorts into an int.
// combining two unsigned shorts into an unsigned int. short ush = 4; short usl = 9999; int ucombined = ( ush & 0xffff ) << 16 | ( usl & 0xffff );
For 64 bit unsigned, consider that addition and subtraction give you the same results whether you consider the operands signed or unsigned. When you multiply an two unsigned 64 bit operands together you get a 128 bit result which won’t fit in a long anyway, so 64 bit unsigned multiply is not useful. To implement an unsigned 64 bit division, you could handle it 32 bits as a time, much the way you handled decimal division in grade 4. Check the signs first, if they are 0 just use ordinary division.
You could store a signed or unsigned number in byte, char, int or long.
Sometimes you get the same result in terms of bits whether you treat quantities as signed or unsigned.
| Does Signed/Unsigned Matter? | |||||
|---|---|---|---|---|---|
| Operator | 8 bit | 16 bit | 32 bit | 64 bit | |
| = | load | ||||
| = | store | ||||
| +- | addition/subtraction | ||||
| * | multiplication | ||||
| / | division | ||||
| % | remainder | ||||
| == != | equality | ||||
| < <= > >= | comparison | ||||
| & | ~ ! | bitwise | ||||
| >>> >> << | shift | ||||
For large unsigned numbers, look into BigInteger and a BigDecimal.
/** * Convert an unsigned int to a String. * @param i the int to convert. * @return the equivalent unsigned String */ public static void unsignedToString( int i ) { return Long.toString( i & 0xffffffffL ) }To display unsigned longs, use Long.toHexString. Writing a base 10 unsigned converter would be a challenge.
![]() |
and suggestions to improve this page to Roedy Green : | ||
| Canadian Mind Products | |||
| mindprod.com IP:[65.110.21.43] | |||
| Your face IP:[38.103.63.17] | ![]() | ||
| You are visitor number 36,827. | |||
| You can get a fresh copy of this page from: | or possibly from your local J: drive (Java virtual drive/Mindprod website mirror) | ||
| http://mindprod.com/jgloss/unsigned.html | J:\mindprod\jgloss\unsigned.html | ||