比方说,我们有两个整数变量,分别为A
和B
,其长度分别为N < 16
和M < 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
答案 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