C编程 - 十六进制或十进制约定

时间:2017-10-05 14:07:03

标签: c hex

我的问题非常简单。我是微控制器世界的新手,并试图了解haxadecimal或十进制命名约定的用法。我看到很多C代码,程序员的第一部分使用十进制命名约定:

#define TEST_BUTTON_PORT  1
#define TEST_BUTTON_BIT   19

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

#define IOCON_FUNC0  0x0                 
#define IOCON_FUNC1  0x1    

不同惯例的重要原因是什么?只是程序员的选择吗?

1 个答案:

答案 0 :(得分:2)

hex的目的是简化二进制数的使用,因为二进制对于人类来说非常难以阅读。使用十六进制时的一些示例:

  • 描述二进制数和二进制表示。
  • 处理硬件地址。
  • 做逐位算术。
  • 声明位掩码/位字段。
  • 处理任何形式的原始数据,例如内存转储,机器代码或数据协议。
奇怪的是,奇怪的是,当指定要移位的位数时。这几乎总是以十进制表示法完成。如果你想设置第19位,通常可以写下:

PORT |= 1 << 19;

这个假设位从0到 n 枚举。

我想这是因为在枚举事物时十进制格式更方便,例如位/引脚号。 (而MCU的制造商通常会使用十进制表示法枚举引脚。)