我是 9 年级,我的数学老师让我在不使用+
登录 C 程序的情况下添加数字。
我试过 a - (-b) = a + b;
了,但我的数学老师想要其他选择。
在你的 c 程序中使用这个函数
int Add(int a, int b)
{
while (b)
{
// carry now contains common set bits of "a" and "b"
int carry = a & b;
// Sum of bits of "a" and "b" where at least one of the bits is not set
a = a ^ b;
// Carry is shifted by one so that adding it to "a" gives the required sum
b = carry << 1;
}
return a;
}
使用按位^
和&
运算符和递归
int add(int x, int y){
return y == 0 ? x : add( x ^ y, (x & y) << 1);
}
PS:是vikas提出的一种算法的递归版本。
在Java中使用递归-
public static int add(int a, int b){
if(b == 0) return a;
int sum = a ^ b;
int carry = (a & b) << 1;
return add(sum, carry);
}
在 C-
int add(int a, int b){
if(b == 0) return a;
int sum = a ^ b;
int carry = (a & b) << 1;
return add(sum, carry);
}
使用Anti Log()
你可以做到这一点
Temp= Anti Log(a)* Anti Log(b);
a+b value is equals to log(Temp);
适用于整数而不是双精度。
#include<stdio.h>
int add(int a, int b) {
return (int)&((char *)a)[b];
}
int main() {
printf("%d", add(5, 17));
getchar();
}
不可移植,但不使用“+”字符。这会将 a 转换为 char 指针,用 [] 将 b 添加到它,然后将其转换回 int。