Мне нужна помощь в написании метода, который принимает int num и возвращает двоичное дополнение num как int с использованием побитовых операторов в Java.
public int twosComplement(int num) {
}
Я могу написать метод, используя строки и "Integer.toBinaryString
" и "Integer.parseInt
", но я не могу использовать побитовые операторы, поскольку, когда я использую "Integer.toBinaryString
" для отрицательного числа, полученная строка слишком длинный для "Integer.parseInt
", и я получаю исключение:
Exception in thread "main" java.lang.NumberFormatException: For input
string: "1111111111111100000001111111111111111111110000000"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)