Thread View: cn.comp.lang.java
2 messages
2 total messages
Started by Davy Hawk
Sun, 09 Sep 2007 00:52
请问Java中如何处理无符号型数据?
Author: Davy Hawk
Date: Sun, 09 Sep 2007 00:52
Date: Sun, 09 Sep 2007 00:52
19 lines
1703 bytes
1703 bytes
Java中没有无符号型但由于某种情况需要处理无符号型数据该怎么做?
比如:
32位无符号型整数 0xabcdef67 放在 int 型里,进行 >> 4位,将变成 0xfabcdef6。
也就是说 Java 里面对大于0x80000000的无符号型整数进行>>操作时只能自己进行
处理:
int n = 0xabcdef67, i = 4;
boolean flag = false;
if (n<0) {
flag = true;
n &= 0x7fffffff;
}
n >>= i;
if (flag) {
n |= ((int)1<<(31-i));
}
不知道出了这种方式,是否还有其他办法处理无符号型整数?
我知道对于上面情况还可以把int扩展到long再处理,但如果是64位呢?
Re: 请问Java中如何处理无符号型数据?
Author: Davy Hawk
Date: Mon, 10 Sep 2007 10:12
Date: Mon, 10 Sep 2007 10:12
22 lines
1864 bytes
1864 bytes
哦。。。知道了,无符号右移: n >>>= i;
Davy Hawk wrote:
> Java中没有无符号型但由于某种情况需要处理无符号型数据该怎么做?
>
> 比如:
> 32位无符号型整数 0xabcdef67 放在 int 型里,进行 >> 4位,将变成 0xfabcdef6。
> 也就是说 Java 里面对大于0x80000000的无符号型整数进行>>操作时只能自己进行
> 处理:
> int n = 0xabcdef67, i = 4;
> boolean flag = false;
> if (n<0) {
> flag = true;
> n &= 0x7fffffff;
> }
> n >>= i;
> if (flag) {
> n |= ((int)1<<(31-i));
> }
>
> 不知道出了这种方式,是否还有其他办法处理无符号型整数?
> 我知道对于上面情况还可以把int扩展到long再处理,但如果是64位呢?
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads