我需要循环移位二进制字符串3位。我怎样才能在java中实现它?
究竟是什么“<<”运营商意味着 提前谢谢。
答案 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是您的数据类型可以拥有的位数。