Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.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 - Fatal编程技术网

Java 将3整数压缩为一个短整数

Java 将3整数压缩为一个短整数,java,Java,所以我得到了3个int,其中2个是从0到15(x和z),1(y)是从0到255。我一直在尝试用位移位来处理这样的事情 compressed = (short) (x>>12|y>>8|z); 但它只得到z值 正确的方法是什么您正在改变错误的方向: compressed = (short) ((x<<12) | (y<<4) | z); compressed=(short)((x您需要使用另一个方向的移位,使用括号,因为移位的优先级较低 comp

所以我得到了3个int,其中2个是从0到15(x和z),1(y)是从0到255。我一直在尝试用位移位来处理这样的事情

compressed = (short) (x>>12|y>>8|z);
但它只得到z值


正确的方法是什么

您正在改变错误的方向:

compressed = (short) ((x<<12) | (y<<4) | z);

compressed=(short)((x您需要使用另一个方向的移位,使用括号,因为移位的优先级较低

compressed = (short) ((x << 12) | (y << 8) | z);

compressed=(short)((x btw
|
的优先级高于
我试过用这个测试它,但它总是得到重复的x=0;y=0;z=0;而(xI我很确定它应该是
(x)你也是对的。已编辑。我想我被名称弄糊涂了。虽然整数类型中的位字段允许紧凑存储,但它们会增加代码的复杂性,使代码脆弱且难以维护。如果数据模型允许,你应该尽可能使用离散整数类型而不是位字段。