连接两个整数的二进制表示形式

时间:2018-09-07 12:11:04

标签: java bit-manipulation bit-shift

比方说,我们有两个整数变量,分别为AB,其长度分别为N < 16M < 16。 我们希望有一个新的int变量C,以使N的最低位包含A的位,接下来的M位包含B的位。 (假设所有变量的长度均为32位,且尾数少。)

在我的解决方案中,我使用二进制字符串来作弊:

int a = 65535;
int b = 65;
String cStr = Integer.toBinaryString(b) + Integer.toBinaryString(a);
int c = Integer.parseInt(cStr, 2);

但是,如何使用按位运算符呢?

示例:

A=1, B=1 (N=1, M=1 resp.) then C = 11 A = 11000011010100, B = 101100 (N=14, M=6 resp.) then C = 10110011000011010100

2 个答案:

答案 0 :(得分:6)

Java,

c = b << 16 | a;

但是,如果您要移位确切的位数:

c = b << (32 - Integer.numberOfLeadingZeros(a)) | a;

答案 1 :(得分:-1)

尝试此操作,并检查您是否具有相同的值。我不确定它将在Java中如何运行,但是可以在C ++和C#中使用 int c = b << 16 |一个;

首先,您应该计算b的偏移量。所以:

activity_main.xml
相关问题