最好在C#中完成。
据说,我有一个 1024 的整数。 我将能够生成这些方程式:
4096 >> 2 = 1024
65536 >> 6 = 1024
64 << 4 = 1024
依旧......
任何线索或提示或指南或想法?
编辑:好的,简单来说,我想要的是,例如......嘿,我给你一个1024的整数,现在给我一个可能的位移方程列表,它总是返回1024的值。
好的,抓一点。看来我的问题不是很简洁明了。我会再试一次。
我想要的是生成基于数值的可能的位移方程列表。例如,如果我的值为1024,我将如何生成一个总是返回值为1024的可能方程式列表?
示例公式:
4096 >> 2 = 1024
65536 >> 6 = 1024
64 << 4 = 1024
以类似的方式,如果我要求你给我一些额外的方程式给我5,你会回答:
3 + 2 = 5
10 - 5 = 5
4 + 1 = 5
我还是太模糊了吗?我为此道歉。
答案 0 :(得分:0)
您可以反转每个等式,从而“生成”可能的等式:
1024 >> 4 == 64
因此
64 << 4 == 1024
因此,产生1024的所有右/左移位而不会因变量的上溢或下溢而丢失位,然后反转相应的等式。
答案 1 :(得分:0)
只需添加额外的'&gt;'或'&lt;':
uint value1= 4096 >> 2;
uint value2 = 65536 >> 6;
uint value3 = 64 << 4;
答案 2 :(得分:0)
你问为什么存在这些关系?向左移位1位相当于乘以2.所以512 << 1 = 512 * 2 = 1024
。向右移动1除以2.移位2乘以/除以4,n为2 ^ n。所以1 << 10 = 1 * 2^10 = 1024
。要查明原因,请用二进制编写数字:让我们以7为例:
7 -> 0000 0111b
7 << 1 -> 0000 1110b = 14
7 << 3 -> 0011 1000b = 56
如果你已经知道这一切,我道歉,但你可能想让问题变得不那么模糊。