gpt4 book ai didi

java - 混合字符串中的字符(更改二进制结果的顺序)

转载 作者:行者123 更新时间:2023-12-01 20:04:45 25 4
gpt4 key购买 nike

我正在做这样的练习:给定一个 n 位的自然数 x > 0,我们用 xn−1…x0 表示它在 2 进制中的表示。例如,x = 8 在 2 进制中是 1000,所以 x3 = 1 且 x2 = x1 = x0 = 0。

编写一个程序,将两个给定自然数 x 和 y 的基数 2 表示与相同位数 n 混合。也就是说,打印 xn−1 yn−1 … x0 y0。

我有一个程序,可以计算 2 个 int 数字的二进制表达式,并将两个二进制文件一起打印。我需要做的是改变0和1的顺序。例如,我输入 2 个数字 (10, 15),我将得到 1010 1111,但我想按以下顺序混合这些数字:

  1. 首先我想要每个二进制的第一个数字 (11)
  2. 然后是每个二进制的第二个数字 (01)
  3. 每个二进制的第三个数字 (11)
  4. 每个二进制的第四个数字 (01)

我有这段代码可以打印 2 个十进制数的二进制,但它缺少混合部分。我已经尝试使用 charAt (这就是为什么我使用字符串作为二进制数字),但我无法使其工作。

Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
int num2 = scanner.nextInt();
String bin = "";
String bin2 = "";
if (num > 0) {
while (num > 0) {
if (num % 2 == 0) {
bin = "0" + bin;
} else {
bin = "1" + bin;
}
num = (int) num / 2;
}
} else if (num == 0) {
bin = "0";
}

if (num2 > 0) {
while (num2 > 0) {
if (num2 % 2 == 0) {
bin2 = "0" + bin2;
} else {
bin2 = "1" + bin2;
}
num2 = (int) num2 / 2;
}
} else if (num2 == 0) {
bin2 = "0";
}

System.out.print(bin+bin2);

最佳答案

考虑到两个数字在二进制表示中应该具有相同的长度,这里有两种方法可以进行混合。

这个将两个数字转换为位,然后进行混合

class Base2Mix1 {

public static void main(String[] args) {
int first = 10;
int second = 15;

String firstBits = baseTwoRepresentation(first);
String secondBits = baseTwoRepresentation(second);

int length = firstBits.length();

char[] mixed = new char[length * 2];
for (int i = 0; i < length; i++) {
mixed[i * 2] = firstBits.charAt(i);
mixed[i * 2 + 1] = secondBits.charAt(i);
}

System.out.println(new String(mixed));
}

private static String baseTwoRepresentation(int num) {
StringBuilder sb = new StringBuilder();
while(num > 0) {
sb.append(num % 2);
num /= 2;
}
return sb.reverse().toString();
}

}

这是在转换过程中进行混合部分的版本

class Base2Mix2 {
public static void main(String[] args) {
int first = 10;
int second = 15;

String mixedBits = mixedBits(first, second);
System.out.println(mixedBits);
}

private static String mixedBits(int first, int second) {
StringBuilder stringBuilder = new StringBuilder();

while(first > 0 && second > 0) {
stringBuilder
.append(second % 2)
.append(first % 2);

first /= 2;
second /= 2;
}

return stringBuilder.reverse().toString();
}
}

关于java - 混合字符串中的字符(更改二进制结果的顺序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58990178/

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