这个程序在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');
请帮助我理解这个程序。
答案 0 :(得分:0)
为什么我们必须在这里减去0?
sum += s1.charAt(first) - '0';
即将字符'0'
和'1'
转换为数字0
和1
。
此处有
>>
运算符和&
运算符的用法:
>>
向右移一位,&
屏蔽掉最右边的所有位。
我是否可以建议您查找和阅读有关按位操作如何在Java中工作的教程。这是非常基本的东西。一旦理解了基础知识,那么您应该能够阅读和理解代码,就像您向我们展示的代码一样。