bit-manipulation - 加法上的 AND 位运算
问题描述
关于这个问题,我一直在寻找一段时间,但我找不到任何结果。假设 A、B 和 C 是整数,是否存在函数(算术或布尔)F 和 G 使得:
(A + C)&(B + C) = F(A,B) + G(C)
其中 & 是位运算符 AND。换句话说,我正在寻找一种使 C 值独立于 A 和 B 的方法。
编辑 这里的“+”是普通的加号操作,不是OR。
解决方案
不。
让我们考虑 A = 0,并且 B 和 C 从 0 和 1 中选择的情况。这是结果表:
B C output
0 0 0
0 1 1
1 0 0
1 1 0
然后我们问这个问题,是否存在函数 F 和 G 使得F(B) + G(C) == C & (B + C)
. 不可能有解决方案,因为前两行暗示G(1) = G(0) + 1
(来自的贡献F
不能改变,因为它的参数两次都是零),底部两行暗示G(0) = G(1)
(同样因为贡献来自F
不能改变,它的参数都是一个次)。我们不能同时拥有它,G(1) = G(0) + 1
也G(0) = G(1)
不能同时拥有。
除了 A = 0 和 B 和 C 都是二进制之外,还有其他情况,但如果 F 和 G 在一种情况下不能存在,那么所有其他情况都无法“修复”它。
推荐阅读
- java - 我想在 MainActivity 中添加 SpreadsheetWebService 而不从其他类调用它
- javascript - 如何从服务器加载最新版本的 ReactJS 应用程序
- java - 如何将选定的文件从 JFileChooser 传输到单击时应用代码的 JButton?
- android - 在所需时间自动启动 Android 应用程序并自动点击
- sql - 使用光标计算给定日期之前的订单数量的过程
- node.js - 尽管在 environment.d.ts 中,打字稿仍将 process.env 变量识别为未定义
- python - python) 读取图像数组
- html - 处理剪辑路径对象时的 Z-index 问题
- macos - 无法在 docker 容器中运行 docker (macOS)
- python - 在python中使用randint()函数时,无法将起始值设置为1000?