如何在OpenOffice Calc中对单元格数值进行按位取反?
解决单元格数值按位取反的方法
通用数学公式(适用于所有电子表格软件)
多数电子表格的XOR()是逻辑判断函数,不支持按位运算,可利用二进制特性直接用公式实现:
- 有符号整数取反:按位取反的结果等价于
-原数 -1,公式示例:
例:A1=5时,计算结果为-6,对应二进制按位取反的正确结果。=-A1-1 - 无符号整数取反:根据数值的二进制位数,用同位数的最大无符号值减去原数。比如8位无符号数最大为255,公式:
16位无符号数用=255-A1=65535-A1,32位则用=4294967295-A1,以此类推。
专用按位函数(针对支持的软件,如Excel)
部分电子表格提供了真正的按位运算函数,比如Excel的BITXOR(),通过和全1的二进制数异或实现取反:
=BITXOR(A1, 2^32-1)
这里2^32-1是32位全1的数值,若需要其他位数,替换对应的指数即可(如8位用2^8-1)。注意BITXOR()仅支持0到2^48-1之间的整数。
内容的提问来源于stack exchange,提问作者Max Kielland
相关产品推荐
相关产品推荐

