Я написал очень простой алгоритм для генерации двоичного представления 32-битного целого числа.Двоичное представление целого числа из 32 битов
Вот мой код:
public class NumberManipulator {
public static final int HEAVIEST_BIT = 32;
public static long intPower(int value, int power) {
if (0== power) {
return 1;
}
long result = 1;
for (int i = 1; i <= power; i++) {
result = result * value;
}
return result;
}
public static void main(String[] args) {
int n1 = 7;
int n2 = 18;
int n3 = 65;
int n4 = 11;
System.out.println(getBinaryRepresentationOf(n1));
System.out.println(getBinaryRepresentationOf(n2));
System.out.println(getBinaryRepresentationOf(n3));
System.out.println(getBinaryRepresentationOf(n4));
}
public static String getBinaryRepresentationOf(int number) {
StringBuilder resultBuilder = new StringBuilder();
for (int i = HEAVIEST_BIT-1; i >= 0; i--) {
long checker = (number >> i) & 1; // (number & intPower(2,i)); (number >> i) & 1;
if (checker == 1) {
resultBuilder.append("1");
} else {
resultBuilder.append("0");
}
}
return resultBuilder.toString();
}
Этот код работает отлично. На следующем рисунке показан вызов метода метода main.
Однако я сталкиваюсь с проблемой при меняю long checker = (number >> i) & 1
по (number & intPower(2,i))
, он просто дает мне отклоняющиеся результаты, и я действительно не могу понять, почему. Любая помощь по этому поводу очень приветствуется.
отлично, спасибо – alainlompo