了解二进制加法程序

时间:2017-04-02 05:44:14

标签: java binary

这个程序在Java中约为binary addition

public static String binaryAddition(String s1, String s2) {
    if (s1 == null || s2 == null) return "";
    int first = s1.length() - 1;
    int second = s2.length() - 1;
    StringBuilder sb = new StringBuilder();
    int carry = 0;
    while (first >= 0 || second >= 0) {
        int sum = carry;
        if (first >= 0) {
            sum += s1.charAt(first) - '0';
            first--;
        }
        if (second >= 0) {
            sum += s2.charAt(second) - '0';
            second--;
        }
        carry = sum >> 1;
        sum = sum & 1;
        sb.append(sum == 0 ? '0' : '1');
    }
    if (carry > 0)
        sb.append('1');

    sb.reverse();
    return String.valueOf(sb);
}

我很难理解这个程序。

为什么我们必须在这里减去0

sum += s1.charAt(first) - '0';

此处有>>运算符和&运算符的用法:

        carry = sum >> 1;
        sum = sum & 1;
        sb.append(sum == 0 ? '0' : '1');

请帮助我理解这个程序。

1 个答案:

答案 0 :(得分:0)

  

为什么我们必须在这里减去0?

 sum += s1.charAt(first) - '0';

即将字符'0''1'转换为数字01

  

此处有>>运算符和&运算符的用法:

>>向右移一位,&屏蔽掉最右边的所有位。

我是否可以建议您查找和阅读有关按位操作如何在Java中工作的教程。这是非常基本的东西。一旦理解了基础知识,那么您应该能够阅读和理解代码,就像您向我们展示的代码一样。