gpt4 book ai didi

java - 连接两个数字位的代码不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:30:17 26 4
gpt4 key购买 nike

任务是连接 2 个给定数字的二进制。

示例:

给定5(101)和3(011),结果是46 (concat(101, 011) = 101011)

到目前为止的代码:

public class Concat {
public static void main(String[] args) {
int t = 0;
int k = 5;
int x = 3;
int i = 0;
while (i < 3) {
t = x % 2;
x /= 2;
k <<= 1;
k |= t;
++i;
}

System.out.println(k);
}

}

但问题是上面的代码给出的是101110,而不是101011

有什么问题?

最佳答案

你的问题是你在向后输入第二个数字的位。那是因为x%2 是低位:

+---+---+---+       <110
| 1 | 0 | 1 | <-----------------+^
+---+---+---+ |1
+---+---+---+ |1
| 0 | 1 | 1 | ----+0
+---+---+---+ 011>

畏缩我令人敬畏的艺术能力:-)但是,如果您已经知道它是 3 位宽,只需使用:

public class concat {
public static void main (String[] args) {
int t = 0;
int k = 5;
int x = 3;

k <<= 3;
k |= x;
// or, in one line: k = (k << 3) | x;

System.out.println(k);
}
}

就图形的外观而言:

                  +---+---+---+
k:| 1 | 0 | 1 |
+---+---+---+
+---+---+---+
x:| 0 | 1 | 1 |
+---+---+---+

+---+---+---+---+---+---+
k<<=3:| 1 | 0 | 1 | 0 | 0 | 0 |
+---+---+---+---+---+---+
+---+---+---+
x:| 0 | 1 | 1 |
+---+---+---+

+---+---+---+---+---+---+
k|=3:| 1 | 0 | 1 | 0 | 1 | 1 |
+---+---+---+---+---+---+
^ ^ ^
+---+---+---+
x:| 0 | 1 | 1 |
+---+---+---+

没有明显的理由一次做一点。

关于java - 连接两个数字位的代码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3138201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com