gpt4 book ai didi

java - (Java) 将负短位放入整数

转载 作者:行者123 更新时间:2023-12-01 11:37:19 26 4
gpt4 key购买 nike

我想将一个短整数(16 位)放入 32 位整数的尾部(我将一些小范围数字压缩为一个唯一的整数)。但没有找到比下面更好看的方法,我必须使用两个操作,可以更好吗?

short sh = -1; // 16 bits 1
int zip = 0; // last 16 bits presents a short number

System.out.println("Wrong way, maybe many of us will try first:");
zip |= sh; // expect 0xffff
System.out.println(Integer.toHexString(zip)); // but 0xffffffff

System.out.println("Simple way, right but looks ugly, two operations");
zip = 0;
zip |= sh << 16 >>> 16; // expect 0xffff
System.out.println(Integer.toHexString(zip)); // yeah

System.out.println("Is there a nicer looking way, one operation for example?");

最佳答案

Java 中的所有按位运算都是使用 int 或 long 完成的,因此您在这里没有太多选择;并转换一个设置了符号位的较短原始类型会将符号位“扩展”为所有“较新创建的”位。

有一种解决方案可以“在一行中”完成此操作,但这仍然是两个操作:

zip |= (sh & 0xffff);

注意,它几乎要求 zip 一开始就为 0,或者至少它的 16 个低位为 0。

关于java - (Java) 将负短位放入整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29839251/

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