gpt4 book ai didi

java - 为什么使用十六进制常量?

转载 作者:IT老高 更新时间:2023-10-28 20:27:41 25 4
gpt4 key购买 nike

有时我会看到以十六进制而不是十进制数字定义的整数常量。这是我从 GL10 类(class)中提取的一小部分:

public static final int GL_STACK_UNDERFLOW = 0x0504;
public static final int GL_OUT_OF_MEMORY = 0x0505;
public static final int GL_EXP = 0x0800;
public static final int GL_EXP2 = 0x0801;
public static final int GL_FOG_DENSITY = 0x0B62;
public static final int GL_FOG_START = 0x0B63;
public static final int GL_FOG_END = 0x0B64;
public static final int GL_FOG_MODE = 0x0B65;

定义 2914 而不是 0x0B62 显然更简单,所以可能会有一些性能提升吗?我真的不这么认为,从那以后改变它应该是编译器的工作。

最佳答案

这可能是为了组织和视觉清洁。 16 进制与二进制的关系比 10 进制简单得多,因为在 16 进制中,每个数字正好对应 4 位。

请注意,在上面,常量是如何用许多共同的数字分组的。如果它们用十进制表示,共同的位就不太清楚了。如果它们具有相同的十进制数字,则位模式将不会具有相同程度的相似性。

此外,在许多情况下,希望能够将常量按位或在一起以创建标志组合。如果每个常数的值被限制为只有一个非零位的子集,那么这可以通过一种可以重新分离的方式来完成。使用十六进制常量可以清楚每个值中哪些位不为零。

还有其他两种合理的可能性:八进制或以 8 为基数仅对每个数字 3 位进行编码。然后是二进制编码的十进制,其中每个数字需要四位,但禁止超过 9 的数字值 - 这将是不利的,因为它不能代表二进制可以的所有可能性。

关于java - 为什么使用十六进制常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10920432/

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