从书中 “Java编程简介,综合版本第10版 - Daniel Liang”第6章,第217页。
从下面的文字中我无法理解十六进制到十进制转换的公式。
h n * 16 n + h n-1 * 16 n-1 + h n-2 * 16 n-2 + ... + h 2 * 16 2 + h 1 * 16 1 + h 0 * 16 0
例如,十六进制数AB8C是
10 * 16 3 + 11 * 16 2 + 8 * 16 1 + 12 * 16 0 = 43916
我理解公式的第二部分以及给定示例中的答案是如何得出的,而不是第一部分
h n * 16 n + h n-1 * 16 n-1 + h n-2 * 16 n-2 +
为什么减去十六进制数和幂? 在给出的示例中,没有进行减法,那么它的用途是什么?
感谢您的帮助。
鉴于T.J,我不确定我的问题是什么意思不清楚。克劳德能够提供一个解决我的困惑的答案。 我认为问题的措辞非常清楚地阐明了我的问题。 我是新来的,所以我可能会遗漏一些明显的东西? 我应该接受答案吗?
没关系,只是注意到答案附近的刻度线。
答案 0 :(得分:1)
减法 在示例中完成,在指数中: n 是十六进制数中的位数减1。因此,例如,对于AB8C, n 是3.公式所说的是:
0xA * 16^3
0xB * 16^2
0x8 * 16^1
0xC * 16^0
因此,如果您正在编写将十六进制转换为十进制的代码,则需要在每个循环中使用 n 和循环,并递减 n 。