Учитывая, что число в 0-й ячейке ленты заполнено, а остальные все просто используются как ячейки скреста (т.е. все они начинаются с 0 и являются временными - I неважно, что с ними происходит), я хотел бы заменить 0-ю ячейку 0 или 1. 0, если четно, 1, если нечетно.Выяснение того, является ли число в ячейке четным или нечетным
В общем, что я хочу сделать, это (в C-эск псевдокод):
cell[0] = (cell[0] % 2)
Я знаю, что существует divmod algorithm определяется следующим образом:
Если не нужно сохранить п, использовать этот вариант:
# >n d [->-[>+>>]>[+[-<+>]>+>>]<<<<<] # >0 d-n%d n%d n/d
Однако, так как X % 2 == X & 1
, т. Е. X mod 2 - самый правый бит X, я думаю, что divmod может быть излишним с точки зрения сложности вычисления.
Есть ли лучший алгоритм/метод для определения, является ли ячейка четной или нет?
Можете ли вы объяснить, как это работает? Кроме того, не будет ли это идти дальше, чем m0 (что приводит к неопределенному поведению)? –
Я играл с этим в течение нескольких дней, получил его от 11 до 9 команд. Наверное, ясно, как это работает. – 6502asm