gpt4 book ai didi

Java shl和shr填充问题

转载 作者:行者123 更新时间:2023-12-02 08:11:00 26 4
gpt4 key购买 nike

是否有一种方法可以在不丢失字节的情况下向左或向右移动,以便填充的字节是正在占用的字节?

例如:10010 shr 2 => 10100或:11001 shl 4 => 11100

信息的丢失似乎很不方便,因为无论如何你都不应该将其用于数学......

我只想以不同的字节顺序通过网络发送包,因此向后移动对我来说很重要

最佳答案

您想要做的是 Java 支持的按位循环。

public class Binary {

public static void main(String[] args) {
Integer i = 18;

System.out.println(Integer.toBinaryString(i));
i = Integer.rotateRight(i, 2);

System.out.println(Integer.toBinaryString(i));
}

}

这将打印出:

10010
10000000000000000000000000000100

被移走的 2 位已循环到开头。但是中间有很多0填充,因为Java中的整数占用32位。

如果您想自己实现此行为,则其内部实现如下:

public static int rotateLeft(int i, int distance) {
return (i << distance) | (i >>> -distance);
}

还有:

public static int rotateRight(int i, int distance) {
return (i >>> distance) | (i << -distance);
}

关于Java shl和shr填充问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7433908/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com