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 haw to handle unsigned short:
// 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 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.
Java’s Integer.toString interprets the value as unsigned. To display unsigned longs, use Long.toHexString. Writing a base 10 unsigned converter would be a challenge. You also might find com.mindprod.common18.ST.toLZHexString and com.mindprod.common18.ST.toHexString might be useful.
Working with a mixture of constants and bytes, it is easy to trip up when int constants don’t sign extend and (byte) constants do. Consider this example:
This page is posted |
http://mindprod.com/jgloss/unsigned.html | |
Optional Replicator mirror
|
J:\mindprod\jgloss\unsigned.html | |
Please read the feedback from other visitors,
or send your own feedback about the site. Contact Roedy. Please feel free to link to this page without explicit permission. | ||
Canadian
Mind
Products
IP:[65.110.21.43] Your face IP:[44.220.251.236] |
| |
Feedback |
You are visitor number | |