Есть 2 натуральных числа, записанных в 2ной системе счисления, ну, например 100101(2) и 101110001011(2). Для каждого бита отдельная ячейка. Числа записаны друг под другом. Надо их просуммировать в 2ной системе счисления.
Я прекрасно знаю алгоритм нахождения суммы, но не могу понять, как это записать в терминах Excel. 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 (перенос разряда)
Здесь ведь нужен некий буфер (для запоминания переносимой 1 - отдельная ячейка икселя) для хранения переносимого разряда + постоянно он участвует в расчетах. Я уже голову сломал, как это записать в Excel. И через остаток что-то думал, и через вспомогательные вычисления и пр. пр.
Лично для меня главная проблема в том, что не знаю, как записать в "ЕСЛИ" обращение к двум ячейкам одновременно, например, в блоке TRUE.
Подскажите, как такое реализуется в Excel. Спс за внимание.
P.S. Использовать встроенные функции перевода, аля дв.в.дес и пр. запрещено, нужен как бы сумматор собственный простейший
Иванов Иван написал: проблема в том, что не знаю, как записать в "ЕСЛИ" обращение к двум ячейкам одновременно, например, в блоке TRUE
Обратиться-то можно. Вопрос, что под этим подразумевается и что хотите получить и где...Без файла сейчас в теме будет больше флуда, чем полезных советов. Как вариант: использовать вложенную И: =ЕСЛИ(И(A1=""'A2="";...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Иванов Иван написал: пример простейшего псевдокода
хм...Ну я все равно не очень понял, если честно. Пример приложенной таблицы мало что прояснил. Возможно, решение формулами будет выглядеть иначе. Можете в приложенном примере показать на паре строк(вбив руками): вот это исходные данные, а вот это надо получить? Там, думаю, всем будет понятнее.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Дмитрий(The_Prist) Щербаков написал: Можете в приложенном примере показать на паре строк(вбив руками): вот это исходные данные, а вот это надо получить? Там, думаю, всем будет понятнее.
Sub qwertí()
Dim m, i, j, s
m = [g7..o9].Value
For i = UBound(m, 2) To 1 Step -1
s = m(1, i) + m(2, i) + j
j = IIf(s > 1, 1, 0)
m(3, i) = s Mod 2
Next i
[g7..o9] = m
End Sub
это элементарнейшее побитовое сложение (школьная программа информатики). Аналогия: для вас, как спецов, сложность этой операции равносильна понимаю функцию "ЕСЛИ" в 1ом посте расписал таблицу бинарной арифметики для бит. складываются числа побитово справа налево и нужно записать средствами Excel.
ну, я попробую показать в обновленном документе, что должно получиться, но человек, который мало-мальски знает, что такое сумматор, для него все очевидно сразу) специально выделил складываемые биты различным цветом (на примере первых трех колонок)
вот это вот не подтверждается в таблице...Отсюда и вопросы, что надо в итоге. По сути, если только на описание опираться, то формула простая(записывается в G9 и распространяется на остальные ячейки):
Код
=ЕСЛИ(СУММ(G7:G8)>1;10;СУММ(G7:G8))
но я так и не понял какой нужен итоговый результат: то ли все это объединить во что-то вроде "0110010110", то ли не надо... И зачем буфер...
Дмитрий(The_Prist) Щербаков,все бы ничего, но одна ячейка предназначена для хранения ОДНОГО бита. В случае, когда сумма > 1 (вместе с буфером), то происходит перенос в более старший разряд. В этом-то вся и проблема.
Кстати, я этот сумматор элементарно закодирую, хоть на Си, хоть на С++, хоть на VBA, а вот средствами Excel не понимаю