我想在C中实现一个排序算法,用于排序十六进制数,如:
10 1 A B
:
1 A B 10
我在这里面临的问题是我不明白A &B小于10,因为在十六进制数中A = 10, B = 11。如果我弄错了,我很抱歉。谢谢你!
在前面的评论中提到,10是0x10,所以这个排序似乎没有问题:0x1 <0 xa & lt;0 xb & lt;0 x10
在任何进制中,两位数字总是大于一位数字。
在十六进制记数法中,我们有比十进制多6位可用的数字,但它们仍然算作一个"数字":
hexadecimal digit | value in decimal representation
A | 10
B | 11
C | 12
D | 13
E | 14
F | 15
当你得到一个以十六进制表示的数字时,它的数字可能碰巧没有使用上述任何额外的数字,而只是众所周知的0..9位数。这可能令人困惑,因为我们仍然必须将它们视为十六进制。特别是,在多位数十六进制表示中,一个数字必须乘以16的幂(而不是10)才能正确解释。所以当你得到10作为十六进制数时,它的值是1(1)乘以16加0(0),所以十六进制数10的(十进制)值是16。
因此,您给出的十六进制数应按1 <& lt;B & lt;10 .
作为一个更详细的例子,十六进制表示1D6A可以像这样转换为十进制:
1D6A
│││└─> 10 x 16⁰ = 10
││└──> 6 x 16¹ = 96
│└───> 13 x 16² = 3328
└────> 1 x 16³ = 4096
──── +
7530
同样10
│└─> 0 x 16⁰ = 0
└──> 1 x 16¹ = 16
── +
16