-2

我需要将二进制字符串循环移动 3 位。我怎样才能在java中实现这个?

“<<”运算符到底是什么意思?提前致谢。

4

2 回答 2

0

对于每个元素,您需要从两件事构建新值:

1) 值 << 3

2)它下面的值(或最小值的顶部的值)>> sizeof(value) - 3

如果您不知道二进制字符串有多大,我建议您将所有 2)s(“剩余部分”)存储在一个单独的集合中,然后在完成所有向上位移后将它们全部添加。否则逻辑会变得太复杂。

于 2013-02-25T05:41:20.407 回答
0

这很简单。请记住,您不能对字符串执行旋转。相反,您可以在数字上做什么。尝试:

    byte i = 15;
    byte j = (byte)(i << 3) ;
    byte k = (byte)(i >> 3);

    System.out.println("Here is result i=" + i + "and j = " + j + "and k = " + k);

这应该给你 i = 15, j = 120 和 k = 1; 这意味着它是非循环移位。

对于循环移位,您可以尝试:

    byte i = 15;
    byte j = (byte) ((i << 3) + (i >> 5));
    byte k = (byte) ((i >> 3) + (i << 5));

5 就像 8 -3 其中 8 是您的数据类型可以具有的位数。

于 2013-02-25T05:56:22.030 回答