Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 反转按位左移位和/或赋值_C++_C_Bit Manipulation_Bit Shift_Or Operator - Fatal编程技术网

C++ 反转按位左移位和/或赋值

C++ 反转按位左移位和/或赋值,c++,c,bit-manipulation,bit-shift,or-operator,C++,C,Bit Manipulation,Bit Shift,Or Operator,这个的反函数是什么 A = (B << 3) | 0x07; A=(B您永远无法完全恢复所有位 B给定(使用8位B作为示例,使用0b作为二进制形式,仅演示) 你可以得到相同的A,所以我认为你不能反转计算,最左边的3位丢失了。所以你向左移动3位,并将低3位设置为1?B=(A>>3)有什么问题吗?(假设你意识到移位时丢失了位)正确,您丢失了前三位。即使初始函数更改为左旋转,您仍然会丢失信息,因为|0x07仍在设置最右边的三位。 10101101 << 3 Turns: 1

这个的反函数是什么

A = (B << 3) | 0x07;

A=(B您永远无法完全恢复所有位

B给定(使用8位
B
作为示例,使用
0b
作为二进制形式,仅演示)


你可以得到相同的
A
,所以我认为你不能反转计算,最左边的3位丢失了。

所以你向左移动3位,并将低3位设置为1?B=(A>>3)
有什么问题吗?(假设你意识到移位时丢失了位)正确,您丢失了前三位。即使初始函数更改为左旋转,您仍然会丢失信息,因为
|0x07
仍在设置最右边的三位。
10101101 << 3

Turns: 10101101
          ^---^
Into:  01101000
       ^---^
B = 0b00000000
B = 0b00100000
//...
B = 0b11100000