gpt4 book ai didi

java - 将小整数类型转换为更宽的整数类型时,依靠带有掩码的 &ing 来删除符号是否安全?

转载 作者:行者123 更新时间:2023-12-04 07:08:15 25 4
gpt4 key购买 nike

我有代码在 Java 中存储 0..255 范围内的值 byte节省大型数据集合中的空间(10^9 条记录分布在数百个数组中)。

如果没有额外的恢复措施,较大的值被解释为负数(因为 Java 整数类型使用 two's complement 表示)。

我收到了 this helpful hint来自 starblue在回答相关问题时,我想知道这种技术是否可以安全地依赖:

int iOriginal = 128, iRestore;
byte bStore = (byte) iOriginal; // reading this value directly would yield -128
iRestore = 0xff & bStore;

最佳答案

是的,它是安全的,确实是将字节转换为(有效)无符号整数的最有效方法。
byte一半and操作将被符号扩展为 int ,即第 7 位中的任何内容都将扩展为第 8-31 位。

屏蔽掉底部的八位(即 & 0xff )然后给你一个 int从 8 - 31 的每一位都有零,因此必须在 0 ... 255 的范围内。

查看我给出的相关回答 here .

关于java - 将小整数类型转换为更宽的整数类型时,依靠带有掩码的 &ing 来删除符号是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/771823/

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