Joh*_*Doe -1 c bitwise-operators
假设我试图在 C 中创建一个用于按位运算的掩码,例如
uint32_t Mask = 0x00000003;
Run Code Online (Sandbox Code Playgroud)
x 是什么意思?我看到很多用 0x 格式写的数字,我不明白为什么,也找不到对我来说真正有意义的解释,也许我没有寻找正确的东西。
这意味着数字以十六进制表示,以 16 为基数,而不是以十进制表示,以 10 为基数。对于您的示例,这没有区别
uint32_t Mask = 0x00000003;
Run Code Online (Sandbox Code Playgroud)
因为 3 在两个基数中都是 3
但
uint32_t Mask = 0x00000010; // '16' in human talk
Run Code Online (Sandbox Code Playgroud)
与
uint32_t Mask = 10; // '10' in human talk
Run Code Online (Sandbox Code Playgroud)
注意
uint32_t Mask = 00000010;
Run Code Online (Sandbox Code Playgroud)
在人类语言中实际上是“8”,因为在 C 和 C++ 中,以零开头的数字文字是八进制的(基数为 8)
你会看见
uint32_t Mask = 0x00000003;
Run Code Online (Sandbox Code Playgroud)
当表达值是一组位标志而不是数字的内容时(请参见名称“掩码”),因为十六进制很好地映射到位序列。你可能会看到
uint32_t Mask1 = 0x00000003;
uint32_t Mask2 = 0x00000010;
uint32_t Mask3 = 0x000000C2;
Run Code Online (Sandbox Code Playgroud)
第一个不需要 0x 但它看起来更干净