# 作業 3 程式語言十八般武藝
[TOC]
題目:
https://leetcode.com/problems/sum-of-two-integers/
# C
```
int getSum(int a, int b) {
while (b != 0) {
// AND 運算
int carry = a & b;
// XOR 運算
a = a ^ b;
// 將進位值左移一位
b = (unsigned int)(carry) << 1;
}
return a; // 輸出
}
```
# C++
```
class Solution {
public:
int getSum(int a, int b) {
while (b != 0) {
int carry = a & b; // 這裡計算進位值
a = a ^ b; // 計算非進位值
b = carry << 1; // 左移一位
}
return a; // 輸出
}
};
```
# Java
```
public class Solution {
public int getSum(int a, int b) {
while (b != 0) {
int carry = a & b; // and
a = a ^ b; // xor
b = carry << 1; // 左移一位
}
return a; // 輸出
}
public static void main(String[] args) {
Solution solution = new Solution();
int a = 1, b = 2;
System.out.println("Input: a = " + a + ", b = " + b);
int result = solution.getSum(a, b);
System.out.println("Output: " + result);
}
}
```
# PHP
```
class Solution {
/**
* @param Integer $a
* @param Integer $b
* @return Integer
*/
function getSum($a, $b) {
while ($b != 0) {
// AND 運算
$carry = $a & $b;
// XOR 運算
$a = $a ^ $b;
// 將進位值左移一位
$b = $carry << 1;
}
return $a; // 輸出
}
}
```
# swift
```
class Solution {
func getSum(_ a: Int, _ b: Int) -> Int {
var a = a
var b = b
while b != 0 {
// AND 運算
let carry = a & b
// XOR 運算
a = a ^ b
// 將進位值左移一位
b = carry << 1
}
return a //輸出
}
}
```
# TypeScript
```
function getSum(a: number, b: number): number {
while (b !== 0) {
// AND 運算
const carry = a & b;
// XOR 運算
a = a ^ b;
// 左移一位
b = carry << 1;
}
return a; // 輸出
}
```
# Kotlin
```
class Solution {
fun getSum(a: Int, b: Int): Int {
var a = a
var b = b
while (b != 0) {
// AND 運算
val carry = a and b
// XOR 運算
a = a xor b
// 左移一位
b = carry shl 1
}
return a // 輸出
}
}
```