我需要将二进制字符串循环移动 3 位。我怎样才能在java中实现这个?
“<<”运算符到底是什么意思?提前致谢。
对于每个元素,您需要从两件事构建新值:
1) 值 << 3
2)它下面的值(或最小值的顶部的值)>> sizeof(value) - 3
如果您不知道二进制字符串有多大,我建议您将所有 2)s(“剩余部分”)存储在一个单独的集合中,然后在完成所有向上位移后将它们全部添加。否则逻辑会变得太复杂。
这很简单。请记住,您不能对字符串执行旋转。相反,您可以在数字上做什么。尝试:
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 是您的数据类型可以具有的位数。