带有按位运算符的二进制电子表格

带有按位运算符的二进制电子表格

我正在寻找一种使用位运算符(例如SHIFT、、和)AND轻松构建二进制电子表格的方法。ORXOR

我查看过 Gnumeric,但找不到任何函数可以让你将基数设置为 2 并执行简单的二进制运算,而不必使用笨重的内置函数,因为你不能使用二进制表示。

答案1

如果您只想在单元格中执行单个布尔值,则可以使用 =TRUE() 和 =FALSE(通常用 1 和 0 表示)。还有 AND、IF(取逻辑第一个操作数)。NOT、OR 和 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 的最新版本。

相关内容