-1
這個程序是關於binary addition在Java中:在瞭解這一計劃瞭解二進制加法程序
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');
能否請你幫我理解這個計劃。
謝謝,你能解釋一下如何>>和&在解決二進制添加到這裏。我理解操作員的工作原理,但不清楚這是如何解決這個附加程序的。 – user3181365
很顯然,這兩個陳述是搞清楚進位是什麼。你讀過關於二進制加法如何工作的任何內容嗎https://en.wikipedia.org/wiki/Binary_number#Addition –