【问题标题】:How to get the OR operation result of binary represented strings?如何得到二进制表示的字符串的 OR 运算结果?
【发布时间】:2016-07-06 10:03:18
【问题描述】:

我有两个格式如下的字符串:

"11010"
"00101"

两者都是二进制表示。我想OR这些数字并得到如下结果:

"11111"

知道如何使用 Java 完成它吗?

更新:

这不是上述问题的重复。我正在对以字符串格式表示的二进制数执行 OR 运算符

【问题讨论】:

  • 你需要写一些代码。有很多方法可以做到这一点。我建议您使用循环并构建一个新字符串。
  • 将它们转换为 int,使用二进制运算符,将结果转换回二进制字符串。 Integer.parseInt(val,radix) Integer.toString(val,radix) 可能会有所帮助。
  • 他们会持续多久?

标签: java string algorithm binary


【解决方案1】:

你可以使用 Integer.parse 方法

int x1 = Integer.parseInt("11010", 2);
int x2 = Integer.parseInt("00101", 2);
int val = x1 | x2;
String binOr = Integer.toBinaryString(val);

【讨论】:

  • 使用不同的输入,这可以通过删除前导零使结果字符串比输入更短。 (这并没有错,只是需要注意的一点)
【解决方案2】:

有很多显而易见的方法,例如转换为 BigInteger 或字符串操作,但这是一种不太明显的方法,当然您不能将其作为自己的功课通过,但您可能会学到一些东西。

public static String or(String a, String b) {
    assert a.length() == b.length();
    char[] ac = a.toCharArray();
    for(int i = 0; i < ac.length; i++)
        ac[i] |= b.charAt(i);
    return new String(ac);
}

我把它作为练习留给你,让你弄清楚为什么会这样。 ;)

【讨论】:

    【解决方案3】:

    使用 Integer 类试试这个:

    public static void main(String[] args) {
        // "11010" "00101"
    
        // 1. parse the strings to integer
        final int nibble1 = Integer.parseInt("11010", 2);
        final int nibble2 = Integer.parseInt("00101", 2);
        // 2. make the bitwise operation and bulk the result in the int result
        final int result = nibble1 | nibble2;
        // print the result as integer
        System.out.println(result);
        // or print it as binary
        System.out.println(Integer.toBinaryString(result));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-02
      • 2021-02-12
      • 2013-08-20
      相关资源
      最近更新 更多