【发布时间】:2013-07-02 19:42:07
【问题描述】:
我的意思是,
如果我这样写,在程序中:
1111
我的意思是 15。同样,如果我这样写:
0xF
我也是说15。我不完全确定这个过程是如何通过芯片进行的,但我模糊地记得一些关于标记的事情,但本质上编译器会计算
2^3 + 2^2 + 2^1 + 2^0 = 15
在这个计算之前 0xF 会被转换为“1111”还是写成 HEX F 代表 15?
Or simply, 16^0 ? -- which obviously is not 15.
我找不到任何有用的文章说明从十六进制转换为十进制而不是首先转换为二进制。
Binary(base2) 转换为我在上面所做的(2^n .. 等)。 HEX(base16)如何转换?基数 16 是否有关联系统,例如基数 2?
我在一篇文章中找到:
0x1234 = 1 * 16^3 + 2 * 16^2 + 3 * 16^1 + 4 * 16^0 = 4660
但是,如果数字是 0xF,这是否代表第 0 位的 F?我找不到一个简单的例子。
【问题讨论】:
-
请注意,许多编程语言不允许您直接输入“字符二进制”(例如,
011010之类的东西)。 C/C++ 的一些变体允许二进制的0b前缀(即0b011010),但这不是标准的。