当前位置: 首页 > 面试题库 >

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

岳毅
2023-03-14
问题内容

有时,我看到用十六进制而不是十进制数字定义的整数常量。这是我从GL10类中学到的一小部分:

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中,每个数字正好对应于四个位。

请注意,在上述常量中,常量是如何与许多数字组合在一起的。如果它们以十进制表示,则通用位将不太清楚。如果它们使用共同的十进制数字,则位模式将不会具有相同的相似度。

而且,在许多情况下,希望能够将各个位按位进行“或”运算以创建标志的组合。如果将每个常量的值限制为仅具有一个非零的位子集,则可以采用可以重新分离的方式来完成此操作。使用十六进制常量可以使每个值中的哪些位非零。

还有其他两种合理的可能性:八进制或以8为基数的数字每个位简单地编码3位。然后是二进制编码的十进制,其中每个数字需要四位,但是禁止使用大于9的数字值-
这将是不利的,因为它不能代表二进制可以实现的所有可能性。



 类似资料:
  • 问题内容: 我正在查看此代码以Java 进行计算。他们为什么在某些循环中使用十六进制值,而对于变量却使用常规值?使用十六进制有什么好处? 问题答案: 因为十六进制对应的位数比十进制数更紧密。每个十六进制数字对应于4位(半字节)。因此,一旦您了解了与每个十六进制数字(0-F)相关的位掩码,就可以执行“我想要低位字节的掩码”之类的操作: 或者,“我想为低31位使用掩码”: 仅供参考:

  • 我需要转换十六进制- 当我运行这个错误实际上是显示我需要的值但我不能得到它 groovy.lang.的方法:静态java.lang.我nteger.parseInt()适用于参数类型:(java.math.大整数,java.lang.整数)值:[28855032353026779507009821653742961358,...]可能的解决方案:parseInt(java.lang.String,

  • 问题内容: 我这里有一个将十进制转换为十六进制的函数,但它以相反的顺序打印。我该如何解决? 问题答案: 如果要自己编写此代码而不是使用内置函数,则可以在打印当前数字之前简单地进行递归调用:

  • 本文向大家介绍如何将十六进制转换为十进制?,包括了如何将十六进制转换为十进制?的使用技巧和注意事项,需要的朋友参考一下 而十六进制数是具有值是16的数字系统中的一个并且它具有唯一的16个码元:0,1,2,3,4,5,6,7,8,9和A,B,C,d,E ,其中A,B,C,D,E和F分别是十进制值10、11、12、13、14和15的单位表示。而十进制系统是最熟悉的号码系统向公众开放。它是10的基数,只

  • 本文向大家介绍如何将十进制转换为十六进制?,包括了如何将十进制转换为十六进制?的使用技巧和注意事项,需要的朋友参考一下 十进制是公众最熟悉的数字系统。它是基数10,只有10个符号-0、1、2、3、4、5、6、7、8和9。而十六进制是计算机或数字系统中最常见的数字系统颜色表示。它是基数16,只有16个符号:0、1、2、3、4、5、6、7、8、9和A,B,C,D,E,F。这些A,B,C,D ,E,F分

  • 问题内容: 如何将十进制转换为以下格式的十六进制(至少两位,零填充,没有0x前缀)? 输入: 输出: 输入: 输出: 我尝试过,但似乎它显示了第一个示例,但没有显示第二个示例。 问题答案: 将该功能与格式一起使用。 该部分要求使用至少2位数字,并使用零将其填充到长度,表示小写的十六进制。 的 格式规范的迷你语言 也给你大写十六进制输出,并且可以前缀字段宽度与以包括或前缀(取决于你阉羊使用或作为格式