1

Я ищу способ легко создавать двоичные таблицы, используя побитовые операторы, такие как SHIFT , AND , OR и XOR .

Я посмотрел на Gnumeric, но не могу найти ни одной функции, которая позволила бы вам установить основание на 2 и выполнять простые двоичные операции, не возвращаясь к использованию встроенной функции, которая неуклюжа, поскольку вы не можете использовать двоичное представление.

1 ответ1

2

Если вы хотите просто сделать единичные логические значения в ячейке, вы можете использовать = TRUE() и = FALSE (обычно представлены 1 и 0). Есть AND, IF (логический первый операнд). НЕ, ИЛИ, И XOR. Вы можете создавать строки из этих значений и выполнять построчные операции, перестановки и т.д.

Если вы хотите вместо этого выполнять побитовые операции с одиночными значениями, вы сможете это сделать. Они работают над двоичным представлением целых чисел в определенном диапазоне. Вы должны иметь возможность отображать их в шестнадцатеричном виде. Я не знаю, какие продукты поддерживают запись в шестнадцатеричном или двоичном виде как часть форматирования ячеек, но такие функции, как BIN2DEC, BIN2HEX, DEC2BIN и DEC2HEX, должны быть полезны. Поиграйте с ними, чтобы получить то, что вы хотите. (Чтобы ввести двоичное значение, используйте BIN2DEC, а чтобы показать результат в двоичном виде, используйте DEC2BIN. Я знаю, что это звучит задом наперед, но вы можете подумать об операциях BIT, ниже: выполнение DEC2BIN для операндов и затем выполнение BIN2DEC для результата - эффект такой, как если бы он это делал, внутренне это проще. Поиграйте с таблицей, которая имеет эти функции, и убедитесь, как она работает для вас.)

Побитовые функции OpenFormula - это BITAND, BITLSHIFT, BITOR, BITRSHIFT и BITXOR. Ожидается, что они будут работать в беззнаковых значениях не менее 48 бит. Для работы в n битах важно определить константу 2 ^ n-1, которая может использоваться в BITAND для отбрасывания любых битов, которые, как ожидается, будут сдвинуты, и BITXOR для дополнения всех битов (нет BITCOMP или BITNOT), Кругового сдвига нет, но можно составить. Для чего-либо особенно сложного может быть лучше использовать построчные операции над ячейками, имеющими одиночные логические значения. В качестве альтернативы может быть желательно определить макросы для сложных побитовых функций, включающих вращения и перестановки.

Возможно, они еще не реализованы единообразно. Проверьте последние версии LibreOffice Calc, Apache OpenOffice Calc и Gnumeric.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .