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

C编程-十六进制或十进制约定,c,hex,C,Hex,我的问题很简单。我是微控制器领域的新手,试图了解haxadecimal或十进制命名约定的用法。我看到很多C代码,程序员的第一部分使用十进制命名约定: #define TEST_BUTTON_PORT 1 #define TEST_BUTTON_BIT 19 第二部分采用十六进制方式: #define IOCON_FUNC0 0x0 #define IOCON_FUNC1 0x1 有什么重要原因导致不同的惯例吗?十六进制只是程序员的选择?十六

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

#define TEST_BUTTON_PORT  1
#define TEST_BUTTON_BIT   19
第二部分采用十六进制方式:

#define IOCON_FUNC0  0x0                 
#define IOCON_FUNC1  0x1    

有什么重要原因导致不同的惯例吗?十六进制只是程序员的选择?

十六进制的目的是简化二进制数的使用,因为二进制数对人类来说很难读取。使用十六进制时的一些示例:

  • 描述二进制数和二进制表示
  • 处理硬件地址
  • 做位运算
  • 声明位掩码/位字段
  • 处理任何形式的原始数据,如内存转储、机器代码或数据协议
奇怪的是,当指定要移位的位数时,这是一个例外。这几乎总是用十进制表示法完成的。如果您希望设置位19,您通常会通过以下方式进行设置:

PORT |= 1 << 19;

PORT |=1十六进制的目的是简化二进制数的使用,因为二进制数对人类来说很难读取。使用十六进制时的一些示例:

  • 描述二进制数和二进制表示
  • 处理硬件地址
  • 做位运算
  • 声明位掩码/位字段
  • 处理任何形式的原始数据,如内存转储、机器代码或数据协议
奇怪的是,当指定要移位的位数时,这是一个例外。这几乎总是用十进制表示法完成的。如果您希望设置位19,您通常会通过以下方式进行设置:

PORT |= 1 << 19;

PORT |=1十六进制(和二进制)在处理按位操作(或位掩码)时通常更容易读取。请尝试将十进制值转换为二进制。然后对十六进制值尝试同样的方法。现在哪一个更容易?在每种情况下使用任何方便的方法。当涉及到位和位掩码时,通常使用十六进制,因为更容易“看到”设置了什么位。或者对于掩码中的单个位,在使用逐位操作(或位掩码)时,使用移位(例如,
1十六进制(和二进制))通常更容易读取尝试将十进制值转换为二进制。然后对十六进制值尝试同样的方法。现在哪一种更容易?在每种情况下使用任何方便的方法。当涉及位和位掩码时,通常使用十六进制,因为它更容易“看到”设置的位。或者对于掩码中的单个位,则使用移位(例如
1)