Tags 这行代码的作用是什么?Const uint32\u t goodguys=0x1<&书信电报;0

Tags 这行代码的作用是什么?Const uint32\u t goodguys=0x1<&书信电报;0,tags,Tags,有人能告诉我这里正在做什么吗: Const uint32_t goodguys = 0x1 << 0 Const uint32\u t goodguys=0x1好吧,如果在您发布的代码后面有更多类似于此的行,那么它们可能是位掩码 例如,如果您具备以下条件: const uint32_t bit_0 = 0x1 << 0; const uint32_t bit_1 = 0x1 << 1; const uint32_t bit_2 = 0x1 <<

有人能告诉我这里正在做什么吗:

Const uint32_t goodguys = 0x1 << 0

Const uint32\u t goodguys=0x1好吧,如果在您发布的代码后面有更多类似于此的行,那么它们可能是
位掩码

例如,如果您具备以下条件:

const uint32_t bit_0 = 0x1 << 0;
const uint32_t bit_1 = 0x1 << 1;
const uint32_t bit_2 = 0x1 << 2;
...
因此,您的
0x1
只是一种将
goodguys
指定为位掩码的方法,因为十六进制
0x
指示器表明代码的作者专门考虑位,而不是十进制数字。然后是
  • 虽然以10为基数是在程序中写入数字的正常方式,但有时您希望以八进制或十六进制表示数字。要以八进制写入数字,请在值前面加0。因此,023实际上意味着10进制中的19。要以十六进制形式写入数字,请在值前面加上0x或0x。因此,0x23实际上意味着基数10中的35
所以 goodguys=0x1; 真的和 好人=1

  • 按位移位运算符将其第一个操作数向左移位()第二个操作数指定的位置数。请看以下两个陈述

    goodguys=0x1


    好家伙们,嗯。。。它将值
    1
    分配给
    goodguys
    ?我们还能告诉你什么?好吧,我知道这会招致一些批评,但我不得不问。为什么是0x1?你就不能写下:警察的好人=1;我可能有答案。:)
    goodguys=0x100
    goodguys=4
    不同,但在其他方面答案很可靠。@Vulcan,为什么0x100不等于4?我原以为100=2^2在二进制中表示4?@AnsonL
    100
    在二进制中是
    4
    在十进制中,但
    0x100
    是十六进制(以16为基数),它在十进制中等于
    256
    const uint32_t num = 5;
    
    ...
    
    bool bit_0_on = (num & bit_0) != 0;
    bool bit_1_on = (num & bit_1) != 0;
    bool bit_2_on = (num & bit_2) != 0;
    ...