gpt4 book ai didi

java - 位移位错误值

转载 作者:行者123 更新时间:2023-12-01 23:15:25 26 4
gpt4 key购买 nike

我有一个问题,我需要使用shift转换坐标,然后将它们转换回原始坐标,但它返回的值不同(最小值,最大值无法更改..)。

int x = 1000;
int y = -1000;

int minx = -294912; // can't be changed.
int miny = -262144; // can't be changed.

//Convert
int convertedX = x - minx >> 4;
int convertedY = y - miny >> 4;

//Convert back
int originalX = (convertedX << 4) + minx;
int originalY = (convertedY << 4) + miny;

System.out.println(originalX + " " + originalY + " - After Convert Back");

最佳答案

问题是你的类次实际上除以 16...所以你最终会丢失信息。您无法精确表示任何不能被 16 整除的值(即底部四位不为 0000 的值。)

如果您不想丢失信息,则无法应用该转换 - 就这么简单。

(就我个人而言,我还会在 x - minx 两边加上括号,以明确优先级。这实际上不会给您带来问题,但除非人们已经了解了优先规则,代码不清楚。)

关于java - 位移位错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21290810/

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