java - 将无符号 32 位整数拆分为两个可重建的 16 位数字

标签 java binary

是否可以将 Java 中的无符号 32 位整数拆分为两个单独的 16 位数字,然后将它们相加得到原始数字。

最佳答案

您可以使用按位运算,包括移位。

首先拆解:

int original32 = 1000;
int high16 = original32 >>> 16;
int low16 = original32 & 0xFFFF;
System.out.println(high16);
System.out.println(low16);

在这里,为了获得低 16 位,我们只是屏蔽值以将高 16 位清零。为了获得更高的 16 位,我们将它们向右移动。

重建:

int rebuilt32 = (high16 << 16) | (low16 & 0xFFFF);
System.out.println(rebuilt32);

这里我们向左移动高 16 位,然后“添加”(实际上,或)低位。

关于java - 将无符号 32 位整数拆分为两个可重建的 16 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44098765/

相关文章:

java - .csv 在扫描后添加空格

java - 如何了解调试期间哪个线程正在创建新变量?

java - 如何使用Java读取ASCII字符?

c# - 表示为字符串的 2 个值的二进制加法

java - 混淆 "super"关键字在此上下文中的作用

java - Vaadin:如何从监听器将验证设置为 false

PHP 将文件读取为字节数组

c++ - 打印二进制递归算法

javascript - 通过 HTTP 在 javascript 中发送二进制数据

algorithm - 为什么二进制搜索索引以这种方式计算?