gpt4 book ai didi

java - 为什么我们有时使用十六进制格式而不是十进制?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:58:44 41 4
gpt4 key购买 nike

我已经阅读了关于

的解释
int a = 0x1; //hexadecimal format

但是,我仍然找不到程序员应该使用 0x1、0x2 而不是普通整数 1 或 2 的原因...

有人可以解释一下吗?

谢谢。

最佳答案

与十进制相比,人们更喜欢十六进制表示的原因有很多。计算中最常见的是 bit fields .一些人已经提到了颜色代码,例如:

red   = 0xFF0000 // 16711680 in decimal
green = 0x00FF00 // 65280 in decimal
blue = 0x0000FF // 255 in decimal

请注意,这种颜色表示不仅比试图找出像 213545 这样的随机整数可能是什么颜色更直观,而且比像 (125, 255, 0)代表(R,G,B)。十六进制表示是一种抽象出与 3 元组相同的想法的简单方法,而且开销要少得多。

请记住,位域有很多应用,考虑一个时空位域:

  Represents x coordinate
| Represents y coordinate
| | Represents z coordinate
| | | Represents t
| | | |
1A 2B 3C 4D

有人可能使用十六进制值的另一个原因是,有时将二进制数字记住(和表示)为两个符号比三个符号更容易。考虑 x86 Instruction Reference .我清楚地知道 0xC3ret;我发现记住十六进制数 00-FF 而不是小数 0-255 更容易(我查了一下,ret 最终是 195),但您的里程数可能会有所不同。例如,这是一些代码 from a project我一直致力于:

public class x64OpcodeMapping {
public static final Object[][] map = new Object[][] {
{ "ret", 0xC3 },
{ "iret", 0xCF },
{ "iretd", 0xCF },
{ "iretq", 0xCF },
{ "nop" , 0x90 },
{ "inc" , 0xFF },
};
}

在这里使用十六进制表示法有明显的好处(更不用说一致性)。最后,正如 Obicere 提到的,十六进制代码通常用作错误代码。有时它们以类似字段的方式分组。例如:

0x0X = fatal errors
0x1X = user errors
0x2X = transaction errors
// ...
// X is a wildcard

在这样的架构下,最小错误列表如下所示:

0x00 = reserved
0x01 = hash mismatch
0x02 = broken pipe
0x10 = user not found
0x11 = user password invalid
0x20 = payment method invalid
// ...

请注意,如果需要,这也允许我们在 0x0X 下添加新错误。这个答案最终比我预期的要长很多,但希望我能说明一些问题。

关于java - 为什么我们有时使用十六进制格式而不是十进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25635888/

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