我想在C語言中實作一種排序演算法,用于對十六進制數字進行排序,例如:
10 1 A B
到此:
1 A B 10
我在這里面臨的問題是,我不明白A& B是如何小于10的,因為在十六進制數字中A=10,B=11。如果我弄錯了,我很抱歉。 謝謝你!
uj5u.com熱心網友回復:
正如前面的評論中提到的,10是0x10,所以這種排序似乎沒有問題:0x1 < 0xA < 0xB < 0x10
uj5u.com熱心網友回復:
在任何基數中,一個有兩位數的數字總是比一個有一位數的數字大。
在十六進制中,我們比十進制多了6個數字,但它們仍然算作一個 "數字"。
十六進制的數字 | 十進制的數值
A | 10
B | 11 11
C | 12 12
D | 13 13
| 14 14 F
F | 15 15
當你得到一個用十六進制符號表示的數字時,可能它的數字剛好沒有使用上述額外的數字,而只是眾所周知的0...9數字。這可能會引起混淆,因為我們仍然必須把它們當作十六進制。特別是,多數字十六進制表示法中的一個數字必須與16的冪相乘(而不是10)才能被正確解釋。因此,當你得到10作為十六進制數字時,它的值是十六的一(1)倍加零(0),所以十六進制數字10的(十進制)值是16。
因此,你給出的十六進制數字應該排序為:1 < A < B < 10。
作為一個更詳細的例子,十六進制表示法1D6A可以這樣轉換為十進制:
1D6A
│││└─> 10 x 16? = 10
││└──> 6 x 161 = 96
│└──> 13 x 162 = 3328[/span
└────> 1 x 16 3 = 4096
────
7530
類似的情況
10
│└─> 0 x 16? = 0
└──> 1 x 161 = 16
──
16 16
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/310854.html
標籤:
