n.r*_*.r. 7 c c++ bit-manipulation bit-shift or-operator
对此有什么反函数?
A = (B << 3) | 0x07;
Run Code Online (Sandbox Code Playgroud)
B当我已经有相应的时候,我怎么能得到一个A?
Jam*_*rey 16
你无法完全恢复所有位.
B << 3将'B'向左移动三位,并且它不会循环.这意味着B的前三位的状态被删除 - 除非你知道那些,否则你将无法恢复B.
例:
10101101 << 3
Turns: 10101101
^---^
Into: 01101000
^---^
Run Code Online (Sandbox Code Playgroud)
前三位丢失,底三位填充零.已删除的数据已删除.
该| 0x07填充底部的三个位(带111),所以即使你没有转移,你会消除与最低三个位111,使得这些位是无法挽救的.
现在,如果它是XOR而不是OR'd,它可以通过另一个XOR恢复:
A ^ same-value 可以与另一个人解开A ^ same-value因为((A ^ B) ^ B) == A
A | same-value 不能与另一个人取消A | same-value
A | same-value也不能用 AND取消:A & same-value
但是这种转变仍然会引起问题,即使它是异或(它不是).
| 归档时间: |
|
| 查看次数: |
1984 次 |
| 最近记录: |