如何长时间操作位?

时间:2019-06-10 07:05:00

标签: java bit long-integer

我想将long转换为二进制代码,然后更改一些位并再次获得long。我发现了这篇文章Java long to binary,但仍然无法实现我想要的目标。

我认为有两种方法可以实现我的目标:

  1. 从多头再到多头
  2. 从长到二进制字符串,然后到int数组,再到长long
for (let [key, value] of Object.entries(object)) {
    window[key] = value;
}

1 个答案:

答案 0 :(得分:4)

仅使用按位运算,而不是将long转换为int的数组。

  

我想将前32位与后32位交换

那将是:

long result = ((x & 0xFFFFFFFF00000000l) >> 32) | ((x & 0x00000000FFFFFFFFl) << 32);

这将屏蔽掉前32位,将它们向右移动,屏蔽掉后32位,将它们向左移动,然后将结果与|(或)合并。

Live example

class Example
{
    public static void main (String[] args) throws java.lang.Exception
    {
        long x = 0x1000000020000000l;
        long result = ((x & 0xFFFFFFFF00000000l) >> 32) | ((x & 0x00000000FFFFFFFFl) << 32);
        System.out.printf("0x%016X\n", x);
        System.out.printf("0x%016X\n", result);
    }
}

输出:

0x1000000020000000
0x2000000010000000

Bitwise and Bit Shift Operators tutorial中的更多内容。