Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Реализовать сдвиг двоичного кода числа в MS EXCEL (с примером)

Так, необходимо реализовать сдвиг двоичного числа.

Выглядит это следующим образом:

Допустим, код = 11000000,
сдвиг = 7
Если мы произведем сдвиг, то получим БИТ = 0).

Можно попробовать на следующих кодах:
11001111, 11000101, 11001011.

В 4-х кодах БИТ должен быть равен: 0, 0, 1, 1 соответственно.

Вопрос не в том, как это работает (потому что очень просто: смотрим последовательность «0» и «1». Считаем по сдвигу, какой бит необходимо записать. (Если сдвиг 9, то записываем 9 элемент). Каждый раз начинаем считать сначала).

Вопрос в том, как реализовать формулу в MS EXCEL, жду предложений!

Дополнен

Ситуация немного изменилась.
Изначально я проверил первые итоговые значения БИТОВ и сделал вывод, что рассчет БИТА выполнялся ясно и понятно как, но оказалось все совсем не так. Стоило зайти дальше (начиная с 4-го) и неясность проявилась. Теперь допом надо понять, каким образом это так получается :)

Данные приведены из примера задания:

Дополнен

Ранее в вопросе не указал сдвиги для каждого приведенного двоичного числа, их можно взять из таблицы в дополнении №1

Дополнен

Вроде бы как пришел к какому-то недорешению:

=ЛЕВСИМВ(ЛЕВСИМВ(B2; ДЛСТР(B2)-C2) & ПОВТОР("0"; C2); 1)

Результат вроде бы как выдает похожий на пример.
Единственная проблема, не могу понять как зациклить.

Необходимо, чтобы при завершении строки, она откатывалась в начало и сдвигалась дальше.

Дополнен

Исправил прошлый вариант формулы на более верный:

=ЛЕВСИМВ(ПРАВСИМВ(B3; ДЛСТР(B3)-C2) & ПОВТОР("0"; C2); 1)

где B2 - КОД
C2 - СДВИГ

Задача с циклом прежняя

Дополнен

Нашел решение:

Объединить все доступные коды в одну строку формулой:
=B2&B3&B4&B5&B6&B7&B8&B9

Сдвиг отсчитывается от полученной строки, в строке D2 прописываем формулу:
=ПСТР(A11;C2;1) - тянем строку до конца таблицы

По дате
По рейтингу
Аватар пользователя
Мастер

Не понял задание.
1 - 1 элемент
1 - 2 элемент
0 - 3 элемент
0 - 4 элемент
0 - 5 элемент
0 - 6 элемент
0 - 7 элемент
0 - 8 элемент
Выводим 7 элемент? 0
Тогда почему в примерах 0,0,1,1?
11001111
1 - 1 элемент
1 - 2 элемент
0 - 3 элемент
0 - 4 элемент
1 - 5 элемент
1 - 6 элемент
1 - 7 элемент
1 - 8 элемент
4 элемент 0, выводим 0.
11001011
1 - 1 элемент
1 - 2 элемент
0 - 3 элемент
0 - 4 элемент
1 - 5 элемент
0 - 6 элемент
1 - 7 элемент
1 - 8 элемент
4 элемент 0, выводим 0. а у тебя 1
Как происходит сдвиг?