*如果不使用, /, +, -, , 运算符,您如何将一个数除以 3 %?
*
/
+
-
%
该号码可以有符号或无符号。
这是一个执行所需操作的简单功能。但它需要+运算符,所以您剩下要做的就是使用位运算符添加值:
// replaces the + operator int add(int x, int y) { while (x) { int t = (x & y) << 1; y ^= x; x = t; } return y; } int divideby3(int num) { int sum = 0; while (num > 3) { sum = add(num >> 2, sum); num = add(num >> 2, num & 3); } if (num == 3) sum = add(sum, 1); return sum; }
正如吉姆评论这个作品,因为:
n = 4 * a + b
n / 3 = a + (a + b) / 3
所以sum += a, n = a + b, 和迭代
sum += a
n = a + b
当a == 0 (n < 4),sum += floor(n / 3);即 1,if n == 3, else 0
a == 0 (n < 4)
sum += floor(n / 3);
if n == 3, else 0