Flash 查找数字位置的位掩码
我正在尝试为一个游戏(在Flash中)制定一个逻辑。在一部分中,给定以下行:Flash 查找数字位置的位掩码,flash,actionscript-2,bit-manipulation,bit,Flash,Actionscript 2,Bit Manipulation,Bit,我正在尝试为一个游戏(在Flash中)制定一个逻辑。在一部分中,给定以下行: \uu*\ u*\ u* 我需要找出*之间的所有空格是否为空(行中可能出现除*以外的非空值)。此操作非常频繁。 我想知道是否可以使用行的位表示来实现这一点,而不是循环检查中间位置 对于表示为xx1x1(x=1或0)的行\uu*\ u*\ u*,我可以使用0001110对其进行排序,以便如果答案是0000000,则中间位置为空 当然,这里的问题是,如何使用位操作(在Flash AS2中)找到第二个映射(上面的000111
\uu*\ u*\ u*
我需要找出*
之间的所有空格是否为空(行中可能出现除*以外的非空值)。此操作非常频繁。我想知道是否可以使用行的位表示来实现这一点,而不是循环检查中间位置 对于表示为
xx1x1
(x
=1或0)的行\uu*\ u*\ u*
,我可以使用0001110
对其进行排序,以便如果答案是0000000
,则中间位置为空
当然,这里的问题是,如何使用位操作(在Flash AS2中)找到第二个映射(上面的0001110
)?(地图(1,4)->0110,(1,3)->0100等)还是通过中间位置循环只是更好的选择?您可以通过移位一些位来实现这一点
var bits:int = 0x7F; // 7 bits
var mask:int = ((bits >> (bits - end)) << start) & bits;
另一种描述方式:
位-(end+1)
是左边的零的数量,start
是一序列右边的零的数量 不确定,但您知道您感兴趣的位周围的位的位置吗?还是最左边和最右边的1,比如001xxx1
?是的,我知道位置。这就是我所说的地图(1,4),地图(1,3)等等。
// row: xx1xxx1
// desired mask: 0001110
// the sequence of ones in the mask starts at 1, ends at 3
bits = 0x7F; // 1111111
mask = bits >> 4; // 0000111
mask = mask << 1; // 0001110