|
|
1
27
您需要偏移位,否则无法提取单个标志。如果您有对应于1、2、3和4的标志,并且组合值为5,那么如何判断它是2和3还是1和4? 您也可以这样做,例如:
然后您可以这样组合标志:
你这样提取它们:
|
|
|
2
6
您的第一种方法不是以最有效的方式使用位。在第一个示例中,您使用的是十六进制表示法,它相当于:
在第二种方法中,您似乎每次只增加一个。这在组合标志时不起作用,因为组合值可能与另一个标志相同(例如,1 2==3)。 您应该改为使用这些值:
这是两种力量的力量,它们可以通过按位或任何方式组合而不产生碰撞。 |
|
|
3
4
这样的标志是二进制值,因此您可以将1、2、4、8、16、32、64、128组合为一个字节,或者在int中再加上2到2^31的幂。因为它们是二进制值,所以您可以将它们“或”组合在一起,例如,如果将1、2、4组合在一起,则最终得到7。你可以用“and”来提取你想要的位,所以如果你有一个带标记的int或者“ed”在一起,你想看看“4”位是否被设置了,你可以说
|
|
|
4
2
将标志视为32位的数组(布尔值) 使用1<<位索引(其中位索引是从零开始的,所以0-31)打开其中一个位。 用~(1<<位索引)关闭一个 检查它是否打开或关闭,以及是否使用(1<<位索引) 一旦你克服了数字或/和逻辑或/之间的差异,它就会全部点击。 那么你会喜欢十六进制符号! |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |