【问题标题】:When a number is written as 0x00... what does the x mean [duplicate]当一个数字写为 0x00 ... x 是什么意思[重复]
【发布时间】:2019-04-12 06:23:28
【问题描述】:

假设我试图在 C 中为按位运算创建一个掩码,例如

uint32_t Mask = 0x00000003; 

x 是什么意思?我看到很多用 0x 格式写的数字,但我不明白为什么,也找不到对我真正有意义的解释,也许我没有找到正确的东西。

【问题讨论】:

  • 搜索十六进制表示法。
  • Stackoverflow 不是人工驱动的搜索引擎。在问这些基本问题之前,请考虑至少做一点研究。谷歌搜索“带 0x 的数字”给出了几个示例。

标签: c bitwise-operators


【解决方案1】:

这意味着数字以十六进制表示,以 16 为基数,而不是十进制,以 10 为基数。对于您的示例,它没有区别

uint32_t Mask = 0x00000003;

因为 3 在两个基数中都是 3

但是

uint32_t Mask = 0x00000010;  // '16' in human talk

完全不同
uint32_t Mask = 00000010; // '10' in human talk

你会看到

uint32_t Mask = 0x00000003;

当表示值是一组位标志而不是数字时(参见名称“掩码”),因为十六进制很好地映射到位序列。你可能会看到

uint32_t Mask1 = 0x00000003;
uint32_t Mask2 = 0x00000010;
uint32_t Mask3 = 0x000000C2;

第一个不需要 0x 但看起来更干净

【讨论】:

  • 00000010 在人类对话中是 8 - 前导 0 表示八进制。
【解决方案2】:

'0x' 表示后面的数字是十六进制的。这是一种明确说明数字是十六进制的方式,并且是 C 编译器和一些汇编器认可的符号。

【讨论】:

    猜你喜欢
    • 2017-02-01
    • 2019-05-16
    • 2014-09-19
    • 2015-03-24
    • 2020-03-18
    • 2021-08-02
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    相关资源
    最近更新 更多