java int 字节 64位_Java 位运算 64位long数据 转成2个 32位 int数据 及 回加成原数据...
时间: 2023-12-21 20:03:58 浏览: 43
在Java中,int类型占用4个字节,即32位,而long类型占用8个字节,即64位。如果要将一个64位的long类型数据转成两个32位的int类型数据,可以使用位运算符。具体地,可以将这个64位数据分成高32位和低32位,然后分别转成两个int类型数据。
可以使用以下代码将一个long类型数据转成两个int类型数据:
```
long num = 1234567890123456789L; // 要转换的long类型数据
int high = (int) (num >> 32); // 高32位
int low = (int) num; // 低32位
```
其中,`>>`是右移位运算符,表示将二进制数向右移动指定的位数,被移出的位丢弃,空位补0。在这里,将num向右移动32位,即得到了高32位。由于num是long类型,所以需要将其转成int类型,可以使用强制类型转换。而对于低32位,直接将num转成int类型即可。
如果要将两个int类型数据还原成一个long类型数据,可以使用以下代码:
```
int high = 12345678; // 高32位
int low = 90123456; // 低32位
long num = ((long) high << 32) + (low & 0xFFFFFFFFL); // 合并成long类型数据
```
其中,`<<`是左移位运算符,表示将二进制数向左移动指定的位数,空位补0。在这里,将high向左移动32位,即得到了高32位。由于high是int类型,所以需要将其转成long类型,以免发生溢出。而对于低32位,需要将其转成long类型,并使用按位与运算符`&`将其与0xFFFFFFFFL相与,以消除高32位的影响。最后,将两个32位数据合并成一个64位数据即可。