循环移动二进制字符串

时间:2013-02-25 05:38:38

标签: java

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

究竟是什么“<<”运营商意味着 提前谢谢。

2 个答案:

答案 0 :(得分:0)

对于每个元素,您需要从两个方面构造新值:

1)值<< 3

2)低于它的值(或最低值的顶部值)>> sizeof(value) - 3

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

答案 1 :(得分:0)

很容易。请记住,您无法对String执行旋转。相反,你可以在数字上做到这一点。尝试:

    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是您的数据类型可以拥有的位数。