У меня есть 10-битная двоичная строка, и мне приходится побитовое смещение по кругу на каждой итерации. Я так запутался и потерял это. Что может быть логикой для этого, чтобы сделать это легко? Если это шестнадцатеричное число, мы можем сделать это с помощью num >> 1 или num < < 1, но строка типа «1010101010» должна быть преобразована в шестнадцатеричную, прежде чем применять побитовый сдвиг. Я должен применять побитовый сдвиг круговой 10 раз.Как побитовое смещение двоичной строки в java?
ответ
Вообще говоря, если вы хотите делать числовые операции, лучше всего делать это по номерам. Поэтому я бы предложил преобразовать вашу строку в int (или что-то еще), которое она фактически представляет. Затем вы можете выполнить смещение бит, а затем вернуться к строке, если вам нужно.
Если вы просто хотите выполнять текстовые операции, вы можете использовать StringBuffer и играть с символами.
StringBuffer s = new StringBuffer("1010101010");
for(int i=0; i<10; i++) {
char c = s.charAt(0);
s.append(c);
s.deleteCharAt(0);
}
String result = s.toString();
Но это просто некрасиво, если вы просто пытаетесь сделать математику
Есть методы в классе Integer для преобразования в/из двоичных строк.
int i = Integer.parseInt("1010101010", 2);
String shiftedi = Integer.toBinaryString(i<<1);
Edit, выше не является круговой, хотя, но вы можете использовать простые операции Строки:
String in = "1010101010";
String shifted1 = in.substring(1)+in.substring(0,1);
int bits = Integer.parseInt ("010101010", 2);
преобразует строку в междунар. «Преобразование в шестнадцатеричный, прежде чем мы применяем побитовый сдвиг» - это нонсенс - извините. Hex - это просто способ представления int (например). Вы меняете значение int, а не его представление.
Предполагая, что вы имеете дело с String
, который содержит нули и единицы (он же «двоичная строка»), побитовое смещение легко.
Чтобы «сдвинуть влево», добавьте символ «0» в правый конец для каждого «сдвига влево».
Чтобы «сдвинуть вправо», все немного сложнее. Предполагая, что вы всегда имеете дело с «положительным числом» в двоичном формате, удалите символ в правом конце для каждого «правого сдвига». Если вы хотите сделать «знак расширенного сдвига вправо», вам нужно проверить длину строки, чтобы увидеть, является ли она «максимальной длиной» для конкретной кодировки двоичного значения в форме дополнения 2, тогда вам нужно удалить самый правый символ и необязательно добавить символ «1» влево, при условии, что самый левый символ уже «1».
Теперь, поскольку строки не ограничены в длине (в то время как СЛОВА и DWORDs являются) не ясно, делает ли >>>
оператора смысла для двоичной строки, или даже если 2 дополнения представления отрицательных чисел имеет смысл для двоичной строки, если вы не наложите «ограничение» на число допустимых символов в строке. Это ограничение должно быть одинаковым для двух двоичных строк (или иметь правила продвижения для меньшей строки), если вы хотите сделать любую двоичную математику между двумя двоичными строками.
Другой вариант состоит в том, чтобы просто преобразовать строку в целое число и использовать двоичные операции над целым числом.
- 1. Побитовое смещение
- 2. Побитовое смещение в C
- 3. Повторные побитовое смещение
- 4. побитовое смещение UINT
- 5. Побитовое смещение массива char
- 6. Побитовое круговое смещение в массиве
- 7. LC3 Assembly Побитовое правое смещение
- 8. Смещение двоичной строки справа в машинный код/язык ассемблера
- 9. JavaScript Zero Побитовое смещение влево и правостороннее смещение в Python?
- 10. побитовое смещение с логическим ИЛИ в C
- 11. побитовое смещение способствует неподписанные символ в целое
- 12. Преобразование двоичной строки в шестнадцатеричную строку JAVA
- 13. Invert оператор побитовое смещение/мощность двух
- 14. Побитовое XORing и смещение целых массивов
- 15. Java регулярное выражение для двоичной строки
- 16. Сохранение всех возможных последовательностей двоичной строки, Java
- 17. Добавить нули слева от двоичной строки - Java
- 18. Двоичной программы в Java
- 19. Java: Как выполнить побитовое умножение?
- 20. Как получить все позиции заданных битов двоичной строки в java?
- 21. Java побитовое сравнение байта
- 22. Остаток двоичной строки 3
- 23. Побитовое И (&) выражение в Java
- 24. Запись двоичной строки в файл
- 25. Преобразование двоичной строки в десятичную.
- 26. Как восстановить смещение строки?
- 27. Проверьте длину двоичной строки?
- 28. Разбиение двоичной строки пополам
- 29. string.replace возвращение двоичной строки
- 30. Прочитать любой файл в виде двоичной строки
Применение кругового сдвига к двоичной строке длиной -10 10 раз является нулевой операцией ... –
Является ли это домашней проблемой? (если это так, это прекрасно, вы должны просто пометить его как один) – JRaymond
совсем не ... Я работаю над некоторыми манипуляциями и сам с энтузиазмом пишу логику .. – volatNumbers