假设我有这个位字段值: 10101001
我如何测试任何其他值是否有任何不同n.没有考虑职位?
例:
10101001
10101011 --> 1 bit different
10101001
10111001 --> 1 bit different
10101001
01101001 --> 2 bits different
10101001
00101011 --> 2 bits different
Run Code Online (Sandbox Code Playgroud)
我需要进行大量的比较,所以我主要是寻找性能,但任何提示都非常受欢迎.
如果你将2个值混合在一起,那么只剩下不同的位.
然后,您只需计算仍为1的位,即可获得答案
在c:
unsigned char val1=12;
unsigned char val2=123;
unsigned char xored = val1 ^ val2;
int i;
int numBits=0;
for(i=0; i<8; i++)
{
if(xored&1) numBits++;
xored>>=1;
}
Run Code Online (Sandbox Code Playgroud)
虽然可能有更快的方法来计算字节中的位数(例如,您可以使用256个值的查找表)
| 归档时间: |
|
| 查看次数: |
2341 次 |
| 最近记录: |