gpt4 book ai didi

java - long 的 Java 按位表示会有所不同吗?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:50:41 27 4
gpt4 key购买 nike

我想填充一个 Java 长整型数组,以便它的所有位都设置为 1。我发现 corresponding long value is -1 ,或“0xFFFFFFFFFFFFFFFFl”:

long l = -1L;
System.out.println(Long.toBinaryString(l));

"1111111111111111111111111111111111111111111111111111111111111111"

所以我使用 Arrays.fill() 用 1 填充数组:

final long allBitsOn = -1L;
long[] bits = new long[arrayLength];
Arrays.fill(bits, allBitsOn);

这个数组是一个主要项目的基础架构,我想完全确定 long 有 64 位,并且 long(-1) 总是将它的所有位设置为 1 ,跨所有 VM 实现和 Java 的 future 版本。

这个假设安全吗?

最佳答案

是的,假设是安全的。来自JLS :

4.2. Primitive Types and Values

The integral types are byte, short, int, and long, whose values are 8-bit, 16-bit, 32-bit and 64-bit signed two's-complement integers, respectively, and char, whose values are 16-bit unsigned integers representing UTF-16 code units (§3.1).

two's complement , -1由全1组成的位模式表示。

关于java - long 的 Java 按位表示会有所不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13579225/

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