我目前正在查看一些用C语言为微控制器编写的代码,而我只是想弄清楚为什么某些变量设置为等于0x0和0x1。有人可以解释一下吗?
这是代码:
// Global variables
static bool volatile radio_busy;
int xx = 0x0;
int yy = 0x0;
int zz = 0x1;
bool flag = 1;
Run Code Online (Sandbox Code Playgroud)
0x只是十六进制数字(以16 为底)的前缀,而不是默认的十进制(以10为底)。
所以该阵列{0x0, 0x1, 0xf, 0x42}由十进制值的0,1,15(因为数字是0-9,和a-f等同于10-15)和66(从4 * 16 + 2)。
当意图是对位模式而不是值进行操作时,人们通常会使用十六进制(因为四位中完全包含一个十六进制数字)(a)。
从您提供的代码片段来看,目的并不明确-它具有令人讨厌的通用变量名,这些变量名似乎没有任何有意义的指示,它们的用途是什么,这是未经培训的程序员的标志,他们似乎以某种方式认为大型变量名占用更多空间:-)
(a)例如,您可能需要执行以下操作来将内存映射位置的位b5(其中位从最高有效b7到最低有效b0)编号为1:
unsigned char *memLoc = 0xff00; // memory to modify.
unsigned char curr = *memLoc; // get current.
curr = curr | 0x20; // set ONLY b5, or with binary 00100000
*memLoc = curr // write it back.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
107 次 |
| 最近记录: |