java - 特定整数在运行时需要多少字节?

标签 java memory binary int byte

这很可能是一个重复的问题,但我在搜索时找不到类似的问题。

我正在寻找一种简单、高效的方法来确定 int 在运行时需要多少个有符号字节。

例如,考虑具有以下值的 int:

1     - Requires 1 Byte
10    - Requires 1 Byte
128   - Requires 2 Bytes
1024  - Requires 2 Bytes
32768 - Requires 3 Bytes
...
Integer.MAX_VALUE - Requires 4 Bytes

编辑:对我来说很明显,int 需要 4 个 byte 内存,无论其值如何。尽管如此,我正在寻找如果不是这种情况该值将占用的字节数。

理想情况下,我正在寻找的答案是利用位操作并为输入 0 返回值 1。

最佳答案

根据您的要求提供一条线解决方案:

public int bytesCount(int n) {
    return n < 0 ? 4 : (32 - Integer.numberOfLeadingZeros(n)) / 8 + 1;
}

其中 32 - Integer.numberOfLeadingZeros(n) 返回最高一位的位置。之后,您可以轻松计算出所需的字节数。

关于java - 特定整数在运行时需要多少字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47913909/

相关文章:

c - C语言读取内存

java - 从内存读取和从磁盘读取一样吗?

c - 发送二进制数据

java - 我的二进制转换器的简要说明

java - 在 Mac OS X 上使用 Eclipse 查看 Java 文档

java - 如何在主框架内制作第二个框架?

python - cython中不同字符串的相同内存地址

java - 如何使用 StreamTokenizer 确保特定标记之间有空格?

java - JAVA 上的服务器-客户端-聊天应用程序示例

c - 二分查找 Int 数组大小问题