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