- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
首先我不确定这个按位运算是怎么回事。我编写代码并作为代码片段提供给其他方。
现在如果 VAR 是无符号 8 位整数(unsigned char)并且 r 是 0 或 1 或 2 或 4。如果 r 的值已知并且结果值在那里,则可以反转以下内容。VAR |= 1 << r;//即 200,其中 VAR 为 192,r 为 3
例如,VAR 的初始值为 192,r 的值为 3 *结果为 200*。
现在,如果我有这个 200,并且我知道 r 的值 是 3,我可以将它反转回 192 吗?
我希望这是最简单的,但我不会这些位运算,所以请原谅我。
谢谢
最佳答案
答案是否定的。这是因为 |
(OR) 运算符不是 one-to-one function .
换句话说,VAR
有多个值可以产生相同的结果。
例如:
r = 3;
var0 = 8;
var1 = 0;
var0 |= 1 << r; // produces 8
var1 |= 1 << r; // produces 8
如果你试图反转它,你将无法判断原始值是 0
还是 8
。
类似的情况适用于 &
AND 运算符。
从信息论的角度来看:
运算符 |
和 &
会导致信息丢失,并且不会保留数据的熵.
另一方面,^
(XOR)、+
和 -
等运算符是一对一的,因此保留熵和是可逆的。
关于c++ - 是 VAR |= 1 << 2;可逆的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9625349/
有人知道符合上述所有条件的算法吗?我需要指定一个种子编号,以及我希望输出数字落入的范围(这也是输入数字所在的范围)。这个函数还需要有一个反向操作的对应物。 例如: 我传递了种子 5 和范围 5-35,
如何使递归重命名操作(Linux,使用 python)可逆? 我想在Linux下使用python编写一个程序,该程序执行以下任务:批量递归重命名文件夹中的所有文件,如果文件名有子字符串X,则重命名为Y
我的数组中有三种颜色。最初,我被要求创建一个函数,该函数只需要第一个函数并将其附加到末尾或执行相反的操作,因此我创建了这个函数: // Get our colours var colours = sc
当我错误地删除了contenteditable div中的一些文本时,我可以使用Ctrl + z将其反转。 但是在我使用 javascript 做了一些改变之后。我无法使用 Ctrl + z 返回到之
我有一个 PHP 网络服务,它当前返回一个 zip 存档作为其唯一输出。我正在使用 file_get_contents 从磁盘读取 zip 存档并将其作为响应的主体发回。 我希望它以 JSON 格式返
让我解释一下:在我的用例中,系统为我提供了很多大小可以变化的字符串(字符数;长度),有时它可能非常大!问题是我必须将这个字符串保存在“SQL Server”数据库表的列中,坏消息是我不允许在这个数据库
我是一名优秀的程序员,十分优秀!