我必须在C中创建一个Byte掩码。 我有一个数组:
myArray [0] - 连续掩码第一位索引
myArray [1] - 连续掩码最后一位索引
连续掩码表示带有1的位。字节中的其余位是零。
示例:myArray [0] = 1且myArray [1] = 2所以我的字节掩码应为:00000110
myArray值可能不同,因此掩码不同。 我将在另一个Byte(使用和/或/ xor操作)上使用此掩码来实现所需的结果。
您能否提供一个简单的C语言代码来创建这样的掩码?
答案 0 :(得分:2)
((1 << (myArray[1] -myArray[0] +1)) -1) << myArray[0]
答案 1 :(得分:0)
一个想法是首先使用第二个数字将所有位设置为该点,然后使用第一个数字清除下面的位。
unsigned char mask = ((1 << (myArray[1] + 1)) - 1) & ~((1 << myArray[0]) - 1)
使用示例中的值,((1 << (myArray[1] + 1)) - 1)
将为((1 << (2 + 1)) - 1)
00000111
。后半部分评估为~((1 << 1) - 1)
11111110
。因此,最终结果00000111 & 11111110
为00000110
。