使用按位运算检查变量中位的最快方法是什么?

问题描述 投票:0回答:1

例如,我有一个短(2个字节= 16位)变量:(在我的项目中,这是00、01和10的序列)

0001010101101001 = 0001.0101|0110.1001

并且我想检查此变量是否包含位序列,例如,我需要'01010101'(这是4 x 01)。

最快的检查方法是什么?我找到了一些解决方案,但我确信存在更简单,更快速的解决方案。

(pseudocode)
var =  0001010101101001;
need = 0000000001010101;
for(int i=0;i<4;i++)
{
     if(var&need==need)
           return 1;
     else
           var = var >> 2;
}

或:

(pseudocode)
var =   0001010101101001;
need1 = 0000000001010101;
need2 = 0000000101010100;
need3 = 0000010101010000;
need4 = 0001010101000000;
need5 = 0101010100000000;
if(var&need1==need1) return 1;
if(var&need2==need2) return 1;
if(var&need3==need3) return 1;
if(var&need4==need4) return 1;
if(var&need5==need5) return 1;
else return 0;
bit-manipulation bitwise-operators bit bit-shift bitwise-and
1个回答
0
投票

还有另一种方式:

© www.soinside.com 2019 - 2024. All rights reserved.