【问题标题】:How are Hex and Binary parsed?如何解析十六进制和二进制?
【发布时间】:2013-07-02 19:42:07
【问题描述】:

HEX Article

我的意思是,

如果我这样写,在程序中:

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),但这不是标准的。

标签: binary hex


【解决方案1】:

十六进制数字有 0 到 9 和 A 到 F。

数字 0 到 9 在十六进制和十进制中是相同的。
0xA 是 1010
0xB 是 1110
0xC 是 1210
0xD 是 1310
0xE 是 1410
0xF 是 1510

例如:

0xA34F = 10 * 163 + 3 * 162 + 4 * 161 + 15 * 160支持>

【讨论】:

  • 完美,所以 0xF = 15*16^0。我懂了。因此,之前没有转换。谢谢。
  • 另一个快速的问题,虽然离题了。 4 位组是否仍表示为“半字节”?我在 OP 中链接的文章使用了这个行话。此外,16 位组被称为“字”。同样,32 位组是“双字”。
  • @sherrellbc:是的,这是相当标准的术语。
  • 有时拼写为“nybble”,以同情可怜的“字节”。
  • 另一方面,什么是“单词”在很大程度上取决于您使用的处理器和语言。在您找到特定的验证之前,永远不要假设“单词”有任何特定的长度。
猜你喜欢
  • 2023-03-15
  • 2022-11-16
  • 2014-10-30
  • 2023-03-22
  • 2018-08-26
  • 2010-12-30
  • 2011-10-01
  • 1970-01-01
  • 2018-10-21
相关资源
最近更新 更多