在vs2015中,我们可以这样写代码:
int add(int a, int b)
{
return (b == 0) ? a : add(a ^ b, (a &b) <<1)
/*
if(b == 0)
return a
else
return add(a ^ b, (a &b) <<1)
//异或结果 + 与运算结果左移一位
*/
}
拓展资料:
C++是面向对象的程序语言,区别我们的C语言,具体编程首先要定义一个类,类中包含私有成员以及公有成员两部分,私有成员主要是变量,公有成员主要是方法,另外还需要另外的.cpp程序来实现这些公有方法,以及一个主函数。一般的,外部对私有成员是不能直接访问的,需要通过调用公有方法来实现访问私有成员。
数据在计算机内存中是以二进制存储的。
几种常用的位运算衡凯者咐薯:
与运算&: 对应位均为1时为1,其它为0。
或孙兆运算|: 对应位均为0时为0,其它为1。
异或运算^: 对应位不相同时为1,相同时为0.
按位取反~: 每一位取反
右移>>: 将二进制进行右移,低位丢掉,高位补零。
左移<<: 将二进制进行左移,低位补零,高位丢掉。
#include<string.h>#include<stdio.h>扮键滑
void AntitoneChar(char *str, int len)
{
char ch
int n
for(n= 0n <len/2n++)
{
ch= str[n]
str[n] = str[len-1-n]
str[len-1-n] = ch
}
}
void main()
{
char a[100]
char b[100]
char c[101]
int max
int i
char jc= 0
memset(a, '0', 100)
memset(b, '0', 100)
memset(c, 0, 101)
puts("请输入两个数:")
scanf("%s", a)
scanf("%s", b)
printf("\n")
AntitoneChar(a, strlen(a))
AntitoneChar(b, strlen(b))
max= strlen(a) >亮茄 strlen(b) ? strlen(a) : strlen(b)
for(i= 0i <maxi++)
{
if(a[i] == '\0')
a[i] = '0'
if(b[i] == '\0')
b[i] = '0'
c[i]= a[i] + b[i] + jc - 48
if(c[i] >'9')
{
c[i] -= 10
jc = 1
}
else
jc = 0
}
if(jc == 1)
{
c[i]= '1'
}
AntitoneChar(c, strlen(c))
printf("厅腊%s\n", c)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)