0
我试图交织(为了计算莫顿代码)与值计算莫顿代码
壳体1 2签订长数字说x
和y
(32位):
x = 10; //1010
y = 10; //1010
结果将是:
11001100
壳体2:
x = -10;
y = 10;
二进制表示是,
x = 1111111111111111111111111111111111111111111111111111111111110110
y = 1010
对于交织,我只考虑32位表示,其中i可以与y
, 使用以下代码31位交织的x
第31位,
signed long long x_y;
for (int i = 31; i >= 0; i--)
{
unsigned long long xbit = ((unsigned long) x)& (1 << i);
x_y|= (xbit << i);
unsigned long long ybit = ((unsigned long) y)& (1 << i);
if (i != 0)
{
x_y|= (x_y<< (i - 1));
}
else
{
(x_y= x_y<< 1) |= ybit;
}
}
上面的代码工作正常,如果我们有x
正面和y
负面,但情况2失败,请帮助我,出了什么问题? 负数使用64位,而正数使用32位。如果IAM错误,请更正我。