Недавно я написал метод, который должен переворачивать биты двоичной строки. Флип появляется только в том случае, если MSB (AKA - первый символ в строке) равен 1. По какой-то причине мой код не переворачивает биты по назначению. Любая помощь приветствуется, спасибо! binary and noMSB
оба являются private String
.Flipping Bits In A String
public int binaryToDecimalAssumingOnesComp() {
if (binary.charAt(0) == '0') {
convertedToDecimal = Integer.parseInt(binary, 2);
} else if (binary.charAt(0) == '1') {
noMSB = binary.substring(1);
for (int i = 0; i < noMSB.length(); i++) {
if (noMSB.charAt(i) == '1') {
noMSB.replace(noMSB.charAt(i), '0');
}
else if (noMSB.charAt(i) == '0') {
noMSB.replace(noMSB.charAt(i), '1');
}
convertedToDecimal = Integer.parseInt(noMSB, 2);
}
}
return convertedToDecimal;
}
«мой код не переворачивая биты, как предназначенный «<- What * is * it doing?» Например, что такое вход (значение «двоичный»), каков ожидаемый результат и что ваш код ошибочно возвращается? – smarx
My bad. Его вывод из обычного двоичного преобразования. Например, если вводится '1000000001', выход -' -1', но он должен быть '-511'. Потому что мы переворачиваем каждый бит, но MSB. Таким образом, ожидаемый двоичный код будет« 1111111110 », а затем преобразован в десятичный '-511' – JavaGuy1