如果不使用*,/,+,-,%,运算符,如何将数字除以3
数字可以是有符号的,也可以是无符号的
这是一个执行所需操作的简单函数。但它需要+运算符,因此您只需使用位运算符添加值:
//替换+运算符
整数相加(整数x,整数y)
{
while(x){
int t=(x&y)<;1;
y^=x;
x=t;
}
返回y;
}
int divideby3(int num)
{
整数和=0;
while(num>;3){
总和=相加(num>;>;2,总和);
num=添加(num>;2,num&;3);
}
如果(num==3)
总和=相加(总和,1);
回报金额;
}
正如Jim评论的那样,这很有效,因为:
n=4*a+bn/3=a+(a+b)/3-
因此,
sum+=a,n=a+b,然后迭代 -
当
a==0(n<;4)时,sum+=floor(n/3)即1,如果n==3,则为0