Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于3个不同的整数创建唯一的整数_Java_Hash_Int_Bit Manipulation_Bit Shift - Fatal编程技术网

Java 基于3个不同的整数创建唯一的整数

Java 基于3个不同的整数创建唯一的整数,java,hash,int,bit-manipulation,bit-shift,Java,Hash,Int,Bit Manipulation,Bit Shift,我想从坐标x、y和w在Java中创建一个名为hash的int x和y的值是有符号的,通常是负数 int的大小为32位 我想给w分配4位(如果最高有效位不可用,则分配3位),给x分配14位,给y分配14位 我尝试了以下方法,但我完全不明白为什么值会冲突:w+x这里唯一的问题是运算符优先级在之前,这里唯一的问题是运算符优先级在之前,您的问题是运算符优先级:+优先于您的问题是运算符优先级:+优先于共享您的代码。您遇到了什么问题?对于x和y,您始终可以使用%和/从单个整数中获取x/y。然而,当涉及到添加

我想从坐标
x
y
w
在Java中创建一个名为
hash
int

x
y
的值是有符号的,通常是负数

int
的大小为32位

我想给
w
分配4位(如果最高有效位不可用,则分配3位),给
x
分配14位,给
y
分配14位


我尝试了以下方法,但我完全不明白为什么值会冲突:
w+x这里唯一的问题是运算符优先级在之前,这里唯一的问题是运算符优先级在之前,您的问题是运算符优先级:
+
优先于
您的问题是运算符优先级:
+
优先于
共享您的代码。您遇到了什么问题?对于x和y,您始终可以使用%和/从单个整数中获取x/y。然而,当涉及到添加另一个参数时,它会使事情变得混乱。最好的方法是将值存储在静态位置,然后使用代码解析和读取值。因此,对于2123124的w,x,y,你可以得到值0201230124,并使用代码来确定w包含02,x oo123和y 00124。@nicomp,这里唯一相关的代码是一行代码,我共享了它。@Anton,我不会比较慢很多吗?@Lolums比什么慢?如果要在一个字段中存储3个值,则必须将它们分开,以共享代码。您遇到了什么问题?对于x和y,您始终可以使用%和/从单个整数中获取x/y。然而,当涉及到添加另一个参数时,它会使事情变得混乱。最好的方法是将值存储在静态位置,然后使用代码解析和读取值。因此,对于2123124的w,x,y,你可以得到值0201230124,并使用代码来确定w包含02,x oo123和y 00124。@nicomp,这里唯一相关的代码是一行代码,我共享了它。@Anton,我不会比较慢很多吗?@Lolums比什么慢?如果你想在一个字段中存储3个值,你必须将它们分开,这真的很令人惊讶,我从来没有猜到。谢谢这真是令人惊讶,我永远也猜不到。谢谢
w + (x << 4) + (y << 18)
w + x << 4 + y << 18
((w + x) << (4 + y)) << 18
w + (x << 4) + (y << 18)
int hash =  w << 28 | (x & 0x3FFF) << 14 | y & 0x3FFF;
11110000000000000011111111111111
w -^ X          -^ Y          -^