我目前正在查看一些用C语言为微控制器编写的代码,我只是想弄清楚为什么某些变量设置为等于0x0
和0x1
。有人可以解释一下吗?
代码如下:
// Global variables
static bool volatile radio_busy;
int xx = 0x0;
int yy = 0x0;
int zz = 0x1;
bool flag = 1;
答案 0 :(得分:5)
0x
只是hexadecimal numbers(以16为底)的前缀,而不是默认的十进制(以10为底)。
因此,数组{0x0, 0x1, 0xf, 0x42}
由十进制值0
,1
,15
组成(因为数字分别为0-9
和a-f
等于10-15
)和66
(来自4 * 16 + 2
)。
当人们打算对位模式而不是值进行操作时,人们通常会使用十六进制。(因为四位中完全包含一个十六进制数字)(a)。
您提供的代码段中的意图并不明确-它具有令人讨厌的通用变量名称,对于它们的用途, no 似乎没有任何有意义的指示,这是未经培训的程序员似乎认为大变量名以某种方式占用了更多空间:-)
(a)例如,您可能需要执行以下操作来设置位b5
(其中位从最高有效b7
到最低有效{{1 }})将内存映射到b0
的位置:
1