Skip to content

Commit e9e655f

Browse files
authored
sum of two integers solution
1 parent 96dedf8 commit e9e655f

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

sum-of-two-integers/yhkee0404.dart

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class Solution {
2+
int getSum(int a, int b) {
3+
int ans = 0;
4+
// for (int i = 0, carry = 0, ai, bi, u = 1; i != 64 && (carry | a | b) != 0; i++, a >>>= 1, b >>>= 1, u <<= 1) { // significand 53 bits but u has only 1 bit
5+
for (int i = 0, carry = 0, ai, bi, u = 1; i != 32 && (carry | a | b) != 0; i++, a >>= 1, b >>= 1, u <<= 1) {
6+
ai = a & 1;
7+
bi = b & 1;
8+
if ((ai & bi) == 1) {
9+
if (carry == 1) {
10+
ans |= u;
11+
}
12+
carry = 1;
13+
} else if ((ai ^ bi) == 1) {
14+
if (carry == 0) {
15+
ans |= u;
16+
}
17+
} else {
18+
if (carry == 1) {
19+
ans |= u;
20+
}
21+
carry = 0;
22+
}
23+
}
24+
// return ans;
25+
return (ans & 0x80000000) != 0 ? ans | ~ 0xFFFFFFFF : ans;
26+
}
27+
}

0 commit comments

Comments
 (0)