2017-10-05 105 views
1

我的问题很简单。我是微控制器领域的新手,并试图了解使用十六进制或十进制命名约定。我看到太多的C代码和编程的第一部分采用十进制命名约定:C编程 - 十六进制或十进制常规

#define TEST_BUTTON_PORT 1 
#define TEST_BUTTON_BIT 19 

第二部分使用十六进制方式:

#define IOCON_FUNC0 0x0     
#define IOCON_FUNC1 0x1  

是对不同的约定任何重要的原因?只是程序员的选择?

+0

当使用按位运算(或位掩码)时,十六进制(和二进制)通常更易于读取 – UnholySheep

+0

尝试将十进制值转换为二进制。然后为十六进制值尝试相同的事情。现在哪一个更容易? –

+0

在任何情况下使用任何方便。 –

回答

2

十六进制的目的是为了减轻二进制数的使用,因为二进制对于人类来说是非常难读的。使用十六进制时的一些示例:

  • 描述二进制数和二进制表示形式。
  • 处理硬件地址。
  • 做按位算术。
  • 声明位掩码/位字段。
  • 处理任何形式的原始数据,如内存转储,机器代码或数据协议。

这是一个例外,奇怪的是,当指定要移位的位数时。这几乎总是用十进制表示。如果你想设置位19你通常会通过书面形式做:

PORT |= 1 << 19; 

这个假设位枚举从0到ñ

我想这是因为十进制格式在枚举事物时比较方便,比如位/针号。 (并且MCU等的制造商通常枚举具有十进制符号的引脚)。