[英]Solving for a Variable
提示:本站为国内最大中英文翻译问答网站,提供中英文对照查看,鼠标放在中文字句上可显示英文原文。
在比较 function 中,我如何解决变量num
,这将是我自己对程序的输入?
主 function(部分)
int input;
answer = compare(input);
if(answer !=0xb88202) {
printf("Keep trying!");
exit(0);
}
puts("You got it");
比较 function
uint compare(uint num) {
return (num ^ 0x735) >> 4 ^ 0x6f0;
}
老实说,我不确定如何解决这个问题 go。 我想以某种方式用另一个 XOR 反转 XOR 会有所帮助。 我还尝试将0xb88202
4 ^ 0x6f0
,但我就是想不通。
只需将比较 function 中的操作反转即可。
input = (0xb88202 ^ 0x6f0) << 4 ^ 0x735
将其视为一个方程式并求解。 你有
answer == ((num ^ 0x735) >> 4) ^ 0x6f0
xor 是它自己的逆,所以你得到
answer ^ 0x6f0 == (num ^ 0x735) >> 4
(answer ^ 0x6f0) << 4 == (num ^ 0x735)
((answer ^ 0x6f0) << 4) ^ 0x735 == num
这对于移位来说不太正确,因为右移丢失了左移无法恢复的位(移出底部),但这仅意味着num
的多个值将为您提供answer
,这会发现其中之一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.