就試著解看看。
使用的語言是 Go,以下是自己的解答:
package main
import (
"fmt"
"math"
)
func main() {
a := 94
b := 12341
fmt.Println(addNumber(a, b))
fmt.Println(a + b)
}
func addNumber(a, b int) int {
sum := 0
addTemp := 0
atLeastLoop := int(math.Max(
math.Log2(float64(a)),
math.Log2(float64(b)),
))
for i := 0; ; i++ {
powNum := 1 << i
aPow := a & powNum
bPow := b & powNum
if addTemp == 0 && aPow == 0 && bPow == 0 && i >= atLeastLoop {
break
}
if addTemp == 0 {
if (aPow & bPow) == powNum {
addTemp = 1 << (i + 1)
} else if (aPow | bPow) == powNum {
addTemp = 0
sum = sum | powNum
}
continue
} else {
if (aPow & bPow) == powNum {
addTemp = 1 << (i + 1)
sum = sum | powNum
} else if (aPow | bPow) == powNum {
addTemp = 1 << (i + 1)
} else {
addTemp = 0
sum = sum | powNum
}
}
}
return sum
}
Go Playground 連結:https://play.golang.org/p/T7ip7-xRH7x
沒有留言:
張貼留言