百度百科中,取一个二进制末K位的操作是:
取末k位 | (1101101->1101,k=5) | x and (1 shl k-1)
其中and = & shl = <<
在ActionScript3中,取末k位的操作这样是不行的,需要重新写。
那么仔细考虑一下,取末N位的操作应该如何取呢?
先来看看,位操作中&(and)操作符的应用:
1&0=0
0&0=0
所以呢:
001&000=000
100&111=100
101&011=001
如果位数不同呢?
101&0=0
101&1=1
101&10=00
101&11=01
101011&111=011=11
于是我们取x最后n位的办法就出来了:
x&1111111(n个1)
在AS3中具体的实现代码为:
x&(~(~0<<n));
再简化一下:
x&(~(-1<<n));
在很多AS3程序的优化中,这个操作可是很有用的:-)
取末k位 | (1101101->1101,k=5) | x and (1 shl k-1)
其中and = & shl = <<
在ActionScript3中,取末k位的操作这样是不行的,需要重新写。
那么仔细考虑一下,取末N位的操作应该如何取呢?
先来看看,位操作中&(and)操作符的应用:
1&0=0
0&0=0
所以呢:
001&000=000
100&111=100
101&011=001
如果位数不同呢?
101&0=0
101&1=1
101&10=00
101&11=01
101011&111=011=11
于是我们取x最后n位的办法就出来了:
x&1111111(n个1)
在AS3中具体的实现代码为:
x&(~(~0<<n));
再简化一下:
x&(~(-1<<n));
在很多AS3程序的优化中,这个操作可是很有用的:-)
转载于:https://blog.51cto.com/juwen/234995