这行代码有什么作用?const uint32_t goodguys = 0x1 <<0 [英] What does this line of code do? Const uint32_t goodguys = 0x1 << 0

查看:31
本文介绍了这行代码有什么作用?const uint32_t goodguys = 0x1 <<0的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

谁能告诉我这里做了什么:

Can someone tell me what is being done here:

Const uint32_t goodguys = 0x1 << 0

我假设它是 C++ 并且它正在为一个组分配一个标签,但我从未见过这样做过.我是一个自学的客观 c 家伙,这对我来说看起来很陌生.

I'm assuming it is c++ and it is assigning a tag to a group but I have never seen this done. I am a self taught objective c guy and this just looks very foreign to me.

推荐答案

好吧,如果在您发布的行之后还有更多类似这样的行,那么它们可能是 位掩码.

Well, if there are more lines that look like this that follow the one that you posted, then they could be bitmasks.

例如,如果您有以下内容:

For example, if you have the following:

const uint32_t bit_0 = 0x1 << 0;
const uint32_t bit_1 = 0x1 << 1;
const uint32_t bit_2 = 0x1 << 2;
...

然后您可以将按位 & 运算符与 bit_0bit_1bit_2、... 和另一个数字,以便查看另一个数字中的哪些位被打开.

then you could use use the bitwise & operator with bit_0, bit_1, bit_2, ... and another number in order to see which bits in that other number are turned on.

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;
...

所以你的 0x1 只是一种指定 goodguys 是位掩码的方法,因为十六进制的 0x 指示符表明代码正在专门考虑位,而不是十进制数字.然后 <<0 用于准确更改位掩码的掩码内容(您只需将 0 更改为 12 等即可.).

So your 0x1 is simply a way to designate that goodguys is a bitmask, because the hexadecimal 0x designator shows that the author of the code is thinking specifically about bits, instead of decimal digits. And then the << 0 is used to change exactly what the bitmask is masking (you just change the 0 to a 1, 2, etc.).

这篇关于这行代码有什么作用?const uint32_t goodguys = 0x1 &lt;&lt;0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆