У меня есть методы, которые выполняют как умножение, так и добавление, но я просто не могу обойти их вокруг. Оба они связаны с внешними веб-сайтами, а не моими:
public static void bitwiseMultiply(int n1, int n2) {
int a = n1, b = n2, result=0;
while (b != 0) // Iterate the loop till b==0
{
if ((b & 01) != 0) // Logical ANDing of the value of b with 01
{
result = result + a; // Update the result with the new value of a.
}
a <<= 1; // Left shifting the value contained in 'a' by 1.
b >>= 1; // Right shifting the value contained in 'b' by 1.
}
System.out.println(result);
}
public static void bitwiseAdd(int n1, int n2) {
int x = n1, y = n2;
int xor, and, temp;
and = x & y;
xor = x ^ y;
while (and != 0) {
and <<= 1;
temp = xor ^ and;
and &= xor;
xor = temp;
}
System.out.println(xor);
}
Я попытался сделать пошаговую отладку, но для меня это не имело большого смысла, хотя оно работает.
То, что я, возможно, ищу, - это попытаться понять, как это работает (возможно, математическая основа?).
Изменить: это не домашнее задание, я просто пытаюсь изучить побитовые операции в Java.