gpt4 book ai didi

java - 位运算符和二进制字符串计算

转载 作者:行者123 更新时间:2023-12-02 07:32:27 25 4
gpt4 key购买 nike

我有一个作业,必须将十六进制转换为 16 位二进制字符串,然后使用按位运算符比较其中的两个字符串。我有一个 for 循环,它对字符串生成器字符串执行 a.charAt[i]b.charAt[i] 。现在,我希望输出一个二进制数,但我已经达到了每次执行该行时,它都会给我非 0 或 1 的数字。并且它给我 2 个数字(2 和 3)。我做错了什么?

一些代码:

    int bin = 0;
hex = hex.replaceFirst("0x", "");
bin = Integer.parseInt(hex, 16);
hex = String.format("%16s", Integer.toBinaryString(bin));
return hex;

我尝试计算的两个十六进制是 FFF70001。我已成功将它们转换为二进制字符串。我也不知道为什么,但前面的零没有显示,只有空格:/

我在网上广泛查找了几个小时,但似乎找不到我遇到的问题。

最佳答案

我假设您想要对两个 16 位、大端、十六进制数字进行按位与运算,并将结果显示为二进制。

正如其他人所说,使用数字而不是字符串会让你的生活更轻松 - 除非这是作业的限制?

如果我正在执行这项任务,根据我的假设和我的理解,我会:

  • 将字符串转换为数字
  • 对于数字的每一位,从 0x8000 向下到(包括)0x0001:
    • &相应位
    • 将结果附加到 StringBuilder
  • 返回StringBuilder的内容

要单步执行每个数字的相应位,我将使用 bit maskingbit shifting

注意0x8000 是 16 位数字的最高位。

另一种方法是让 Java 完成很多工作,但这可能不是您作业的重点:

final int a = Integer.parseInt("FFF7", 16); // 0b1111111111110111
final int b = Integer.parseInt("0001", 16); // 0b0000000000000001

final int result = a & b;

final String output = String.format("%16s",
Integer.toBinaryString(result)).replace(' ', '0');

System.out.println(output);

这将打印:

0000000000000001

我希望这能在某种程度上有所帮助,并且我的假设并没有偏离主题太远。祝你好运!

关于java - 位运算符和二进制字符串计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12725521/

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